用mingw编译SWIG java库
Compiling SWIG java library with mingw
我有一个Java项目,它依赖于本地库。我正在使用SWIG构建本地库,它在*nix系统上运行良好。我现在正试图使用mingw 64位工具链和SWIG在Windows上编译它。它将进行编译,我可以适当地打包jnilib(即与我在其他平台上的方式相同),但当我尝试在Java代码中加载库时,我得到:
Exception in thread "main" java.lang.UnsatisfiedLinkError: ... .jnilib: Can't find dependent libraries
然后它在java端有跟踪。很明显,我没有正确地连接某些东西,但我不确定是什么。以下是我的编译命令的相关部分:
swig -java -package cStopPow -c++ StopPow.i
x86_64-w64-mingw32-g++ -I"C:/Progra~1/Java/jdk1.7.0_25/include/" -I"C:/Progra~1/Java/jdk1.7.0_25/include/win32/" -std=c+
+11 -O3 -I"C:/MinGW/include/boost/math/" -c ../src/StopPow.cpp ../src/StopPow_SRIM.cpp ../src/StopPow_LP.cpp ../src/Stop
Pow_BetheBloch.cpp ../src/StopPow_AZ.cpp ../src/PlotGen.cpp ../src/AtomicData.cpp StopPow_wrap.cxx
x86_64-w64-mingw32-g++ -shared -lmingw32 -mconsole StopPow_wrap.o StopPow.o StopPow_SRIM.o StopPow_LP.o StopPow_BetheBlo
ch.o StopPow_AZ.o PlotGen.o AtomicData.o -o libcStopPow.jnilib
为什么输出是libcStopPow.jnilib?我认为它一定是一个dll文件
我使用SWIG 2.0.10、Oracle JDK 1.7.0_40和mingw 64http://nuwen.net/使用Examples\java\ssimple。我在cmd中执行以下操作(我正确设置了JAVA_HOME)swig-java-c++示例.ig++-Wall-Wl,--kill at-I"%JAVA_HOME%/include"-I"%JAVA _HOME%/include/win32"-shared-s-o example.dll*.c*.cxxjava-cp。runme
它按预期工作
相关文章:
- SWIG Java 在使用 -DSWIGWORDSIZE64 时将int64_t转换为 jlong
- Java SWIG wrapper vs direct function calling
- 在 Java 中使用 std::vector和 SWIG
- SWIG:如何处理生成的 Java 代码中的指针
- 如何<UserDefinedClass>通过 Swig 将带有数据的 std::vector 传递给 Java?
- Swig:如何将"FILE"类型从 C++ 传递给 Java
- 使用SWIG Directors将数组从C 传递到Java
- 在SWIG和Visual Studio 2015中使用Java中编译的DLL
- SWIG - Java 代理类数组参数
- 使用 SWIG 将 c++ 包装到 java 不满意的链接错误: HeaderJNI.new_Test()J.
- 通过Swig在Java中处理C 例外
- 将简单的 Java 数组传递给原始的 C 数组 SWIG
- Java和SWIG:类集成到一个包中
- 让SWIG理解在Java中使用char**
- 您将如何为 std::list<std::string> 创建一个类型映射,以在<String> List in C++ 中为 Java 在 SWIG 中创建?
- SWIG/Java:对象过早地获得GCed
- 在Windows中使用swig从Java调用c ++函数,得到java.lang.UnsatisfiedLinkErro
- 如何使用Swig将数组(java中的长数组)从Java传递到C++
- 使用 SWIG 将 Java Map<String、String> 传递给C++方法
- Java 不会从使用 swig 创建的.dll调用函数