我试图使这是在C Java应用程序,链接源是http://phtranslator.sourceforge.net/我做下面的事情来调用COE但要无法调用.net方法从java使用jna?
public class Main {
/** Creates a new instance of Main */
public Main() {
}
public interface simpleDLL extends Library {
simpleDLL INSTANCE = (simpleDLL) Native.loadLibrary(
(Platform.isWindows() ? "C:\\translator\\PhTranslateLib.dll" : "simpleDLLLinuxPort"), simpleDLL.class);
public IntByReference GetTeluguTranslator();
public int Translate(IntByReference Translator, String szInput, StringBuilder szOutput, int nLen);
public int GetTranslatedBufferLength(IntByReference Translator, String szInput, Pointer out);
public void GetTranslatedBuffer(String szOutput, Pointer ppHint);
}
public static void main(String args[])
{
StringBuilder b =new StringBuilder();
simpleDLL sdll = simpleDLL.INSTANCE;
IntByReference y = sdll.GetTeluguTranslator();
int j= sdll.Translate(y , "ananathapura", b, 0);
System.out.println(b);
System.out.println(j);
}
}
I am getting Following `Exception`
Exception in thread "main" java.lang.IllegalArgumentException: Unsupported argument type java.lang.StringBuilder at parameter 2 of function Translate
at com.sun.jna.Function.convertArgument(Function.java:552)
at com.sun.jna.Function.invoke(Function.java:258)
at com.sun.jna.Library$Handler.invoke(Library.java:216)
at $Proxy0.Translate(Unknown Source)
at anil.test.Main.main(Main.java:71)
是取代String builder
与字符串我得到成功,但没有存储在string
什么都不是,甚至你的名字也没有问题,它必须转换为telugu,当使用字符串时,我得到了该缓冲区的长度,但无法获得该字符串 – AnilHoney
看起来像字符串必须通过而不是“StringBuffer”in翻译功能。你尝试使用“字符串” – Reddy
你确定'Translate'采用字符串吗? –