尝试在SWIG使用C ++回调时遵循MIT示例时的java.lang.UnsatisfiedLinkError

时间:2016-02-12 10:53:33

标签: java c++ callback swig quantlib-swig

我正在尝试实现一个简单的应用程序,它使C ++能够回调到Java中。对此,我发现麻省理工学院的一些人多年前写的一些例子:https://github.com/swig/swig/tree/master/Examples/java/callback

但是,在尝试运行我自己的应用程序时,我得到了

Exception in thread "main" java.lang.UnsatisfiedLinkError: com.swig.demo.SwigDemo3JNI.swig_module_init()V at com.swig.demo.SwigDemo3JNI.swig_module_init(Native Method) at com.swig.demo.SwigDemo3JNI.<clinit>(SwigDemo3JNI.java:30) at com.swig.demo.Caller.<init>(Caller.java:39) at com.swig.demo.SwigTest.main(SwigTest.java:47)

其中SwigDemo3JNI是Swig生成的Java类,SwigTest是带有main的java类。谁能让我对我做错了什么有所了解?

1 个答案:

答案 0 :(得分:0)

您可以在初始化应用时设置库路径,下面的代码用于执行此操作:

String libraryPath = "c:/your/path/to/dll/lib";

System.setProperty("java.library.path", libraryPath);
Field sysPath = ClassLoader.class.getDeclaredField("sys_paths");
sysPath.setAccessible(true);
sysPath.set(null, null);
System.loadLibrary("the_dll_lib_name");

希望这对你有帮助!