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

标签 java c++ dll

我们目前使用的软件产品为他们的软件发布了 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/

相关文章:

java - 如何从ActiveMQConnectionFactory获取ActiveMQConnection?

java - ServletContext 变量对其他 servlet 不可见

java - 如何去除图表周围的白色边框?

c++ - 有没有办法在加载 dll 时调试发布版本?

JavaFX 8 : Adding a Custom CSS File Via class. getResource() 错误

c++ 抛出异常,段错误

c++ - 使用新运算符和指针的两个不同声明之间的区别

c++ - 使用 Unix 程序时间计算每次迭代的程序运行时间

visual-studio - Visual Studio 单元测试未使用 PInvoke 找到我的 DLL。我怎样才能解决这个问题?

c# - 想在 asp.net 中使用 c++ 库和 dll