使用i686-w64-mingw32-g ++进行静态库

时间:2015-05-12 16:02:08

标签: static java-native-interface

我有一个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文件)?

作为交叉编译器的新手,我可能做错了什么。请更正我,任何有关此建议将非常有帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

-Wl,--export-all-symbols -Wl,--add-stdcall-alias -v添加此项解决了我的问题