Ich muss eine DLL-Funktion von Java mit einem String-Array-Argument aufrufen. Der Argumentwert muss den gleichen Argumenten entsprechen, die über die Befehlszeile an das Java-Programm übergeben werden (Argument der Hauptmethode). Die Funktion hat folgende Signatur:JNA Char ** Argument
int calledFunction(char **args);
Die wichtigste Methode Argument Typ ist String[]
und entsprechend der JNA documentation, String[]
sollte char **
direkt äquivalent sein.
Aber wenn ich das Argument von der Befehlszeile direkt an die DLL übergeben, stürzt das Programm ab oder die DLL interpretiert die Werte nicht richtig (die Werte sind nicht sinnvoll).
Irgendwelche Ideen?
JNA Interface Definition:
public interface TestDll extends Library {
int calledFunction(String[] param);
}
Verbrauch:
public static void main(String[] args) {
TestDll testDll = Native.loadLibrary("test_dll", TestDll.class);
testDll.calledFunction(args);
}
haben Sie 'str.toCharArray()' versucht? – Tschallacka
Und wie genau kennen Sie die Anzahl der Strings im Array? (argc) – manuell
@Tschallacka was genau meinst du? Können Sie ein Codebeispiel angeben? – Jardo