SWIG c++ Java DLL Windows
SWIG c++ Java DLL Windows
我的问题:为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放置在与系统上的库路径相对应的适当位置)。
相关文章:
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 从 Python 调用 Windows DLL 函数时出错
- C++UWP和经典桌面的通用Windows DLL
- 在特定 Windows DLL 模块中分配内存
- 清理跨越Windows DLL模块边界的堆分配资源时出现问题
- C++Windows DLL:不同函数中的异常处理
- Windows DLL 上的静态链接 libgcc
- Windows DLL实际上如何共享
- 使用Linux C代码和标头文件来编译Windows DLL
- windows DLL是否有可能在多个线程或进程之间使用相同的套接字编号
- 关于构建windows dll的建议
- Windows DLL 链接器错误与模板类
- 如何确定哪个 Windows DLL 用于函数调用
- 从C++ Windows DLL 文件中进行日志记录
- 将 mingw dll 与 Windows DLL 链接起来
- 其中 是 Windows DLL 中的字符串表
- C++ Windows DLL 使用 try-catch 块在内部失败
- Windows:DLL 中的元信息
- 在使用 CMake 构建 Windows DLL 期间运行单元测试
- windows DLL函数调用外部exe文件无效