这几天踩过得坑,记录一下
1.vscode编译的dll,不像vs那样带符号库lib,在使用时,只需要头文件就行了(why?)
2.java命令行编译方法:javac -classpath ..\lib\jna-3.0.9.jar -encoding UTF-8 App.java,其中,"-encoding UTF-8"是指定.java文件的编码方式,因为javac默认认为.java文件是ansi编码的
3.java命令行运行方法:java -classpath ..\lib\jna-3.0.9.jar;. App。App后面不能加.class,否则提示找不到类App
更新下,今天又尝试在linux下用java调用so,跟windows端还是不同的。c++端,主要是DLL_EXPORT的定义有所不同,代码是这样的
#ifdef _WIN32
#define EXPORT_API extern "C" __declspec(dllexport)
#else
#define EXPORT_API extern "C" __attribute__((visibility("default")))
#endif
EXPORT_API int add(int a,int b){
return a+b;
}
java代码的写法一模一样,但是在ubuntu中用javac编译、用java运行时是不一样的,命令分别为
javac -classpath ../lib/jna-3.0.9 Test.java
java -classpath ../lib/jna-3.0.9:./ Test
javac中,不用写jar的后缀;java中,classpath 分割符";"要换成":"