我们目前使用的软件产品为他们的软件发布了 dll 和 lib 文件(他们不给我们源代码)。他们的文件是用 C 编写的。我们用 C++(使用 VS2010)为他们的软件编写了一个 dll 包装器,并将所有 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 或库),并且该 dll 将被唯一命名。有谁知道如何执行此操作或有更好的建议吗?
谢谢!
最佳答案
使用 Maven 和 Maven NAR 插件来管理依赖 hell 。
关于java - 合并/捆绑 DLL/LIB (C++/Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6874117/