我有一个JNI项目,我必须在Windows上工作(我在Linux上工作)。该项目实际上依赖于静态的第三方库文件(存档,即.a文件)。我正在尝试使用i686-w64-mingw32-g++
创建一个JNI共享库文件,其中包括-static
,后跟静态第三方库名称。以下是我正在使用的命令
i686-w64-mingw32-g++ -v -L./ -L/home/user/jre1.8.0_40/lib/amd64/ -I/user/all/apps/Linux2/x86_64/gcc/4.8.2/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.8.2/include -shared -o test.dll test.cpp -lstdc++ -static -thirdparty
尽管将第三方库放在当前工作目录中,但我仍然收到错误
/user/all/apps/Linux2/src/mxe/2013_12_03/usr/bin/../lib/gcc/i686-w64-mingw32/4.8.1/../../../../i686-w64-mingw32/bin/ld: cannot find -thirdparty
请注意:我添加了-I/user/all/apps/Linux2/x86_64/gcc/4.8.2/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.8.2/include
以避免在包含路径之前遇到的错误cannot find jni.h
。
我还尝试使用gcc编译,代替g ++。
我是否需要创建此第三方库的.dll(目前已存档.a包含.obj文件)?
作为交叉编译器的新手,我可能做错了什么。请更正我,任何有关此建议将非常有帮助。谢谢。
答案 0 :(得分:0)
-Wl,--export-all-symbols -Wl,--add-stdcall-alias -v
添加此项解决了我的问题