合并/捆绑DLL / LIB(C ++ / Java)

时间:2011-07-29 13:45:08

标签: java c++ dll

我们目前使用的软件产品为其软件发布了dll和lib文件(它们不向我们提供源代码)。他们的文件是用C语言编写的。我们用C ++编写了一个dll包装器(使用VS2010)并将所有dll导出到java项目中。然后,我们使用System.loadLibrary()调用在Java中加载所有dll。一切都按预期工作。

问题是该软件公司将发布该软件的“更新”版本(Ex v1.0,v2.5等),即使版本不同,其dll的名称也是相同的。所以我们在使用System.loadLibrary()调用时遇到Java错误,因为它不知道要引用哪一个(因为它们都被命名为相同)。

我可以看到显式设置VM args指向包含我们想要的版本的特定lib文件夹(例如:-Djava.library.path = lib \ v1_0)。问题是我们需要在同一个java应用程序中运行所有版本(例如:v1.0,v2.5等)。

所以我最好的猜测是尝试捆绑/合并dll,这样我们每个版本只释放1个dll(包含我们的包装器dll和所有的dll或libs),并且该dll将被唯一命名。有谁知道如何做到这一点或有更好的方式建议吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

使用Maven和Maven NAR插件管理依赖地狱。