SWIG c++ Java DLL Windows

SWIG c++ Java DLL Windows

本文关键字:Windows DLL Java c++ SWIG      更新时间:2023-10-16

我的问题:为c++DLL创建一个java包装器。我知道,有很多关于这个问题的文章,但到目前为止还没有解决方案。那么问题来了:我在我的windows 7,64位上安装了java 1.6 up 29 32位,位于C:\java\jdk。这个路径是路径变量的一部分(在任何地方打开cmdline,我总是可以调用javac…)

我有最新的swig,它成功地为我的DLL创建了python和perl包装器。

当我用VS2008构建java/class示例(它完成时没有错误)并尝试运行runme.java时,我得到了错误:

不满意的链接错误

->未能加载本机代码库。有关的帮助,请参阅SWIG Java文档中关于动态链接问题的章节

DLL非常简单。静态链接到运行时库(/MT)。没有依赖性,但仍然正在获取此错误。

请注意:swig样本不起作用。已安装Java。tcl示例也不起作用。tcl 8.4已安装(类似错误)。

感谢您的帮助。感谢

您的类已成功编译,本机库也已成功编译。问题是Java代码需要在运行时加载您使用Visual Studio生成的共享对象。

运行该类时,请尝试传递-Djava.library.path=<directory containing your DLL>

从您所描述的内容来看,在尝试调用其中一个(由SWIG生成)JNI方法之前,您似乎没有加载在Java中编译的DLL。

我通常使用这样的东西:

%pragma(java) jniclasscode=%{
  static {
    try {
        System.loadLibrary("module");
    } catch (UnsatisfiedLinkError e) {
      System.err.println("Native code library failed to load. n" + e);
      System.exit(1);
    }
  }
%}

在我的SWIG接口文件中,使DLL在运行时由Java代码自动加载。

(您需要确保DLL放置在与系统上的库路径相对应的适当位置)。