【问题标题】:How to build dll in Visual Studio without any dependent library? [closed]如何在没有任何依赖库的 Visual Studio 中构建 dll? [关闭]
【发布时间】:2019-08-29 19:09:43
【问题描述】:

我已经通过 Visual Studio 创建了一个 DLL,并编写了一个 JNI 接口以从 Java 应用程序中使用该 DLL。我已经成功地从我的电脑上运行了 DLL。但是当我从另一台机器上运行 Java 应用程序时,我得到了这个错误:java.lang.UnsatisfiedLinkError: C:\Users\user.jss\windows\project.dll: Can't finddependent library。当我在其他 PC 上安装 Visual Studio 时问题解决了。在创建 DLL 时,Visual Studio 中是否有任何设置可以消除这种依赖关系?

感谢您的帮助。

【问题讨论】:

  • 问题是机器上没有project.dll,不是VS设置。
  • 它存在于机器上。我想我有 vc 运行时依赖。

标签: c++ c visual-studio dll java-native-interface


【解决方案1】:

什么是project.dll?这是 JNI DLL 的名称吗?您必须将依赖于平台的本机库(及其所有运行时依赖项)与您的 Java 应用程序一起提供。如果由于 project.dll 需要 MSVC 运行时而失败,那么您可以将运行时与应用程序一起提供,或者使用 MinGW 等不同的工具链来避免它。

【讨论】:

  • project.dll 被 JAR 文件通过 JNI 使用。您是指运行时与 MSVC 相关的 dll 吗?移植到 MinGW 不会那么容易,因为我使用 windows SDK 中的 winscard 库。
  • 这就解释了为什么需要额外的运行时 dll。最简单的答案是让您的安装程序检查适当的 MSVC 运行时,如果不存在则安装它。或者,您可以尝试以 project.dll 文件大小为代价静态链接运行时依赖项。
  • 感谢您的解释。如果您的第二个解决方案能解决我的问题,那就更好了。有没有办法静态链接到 vc 运行时?我搜索并阅读了这篇文章,类似于我的问题。 stackoverflow.com/questions/1279292/…。但是当我使用 /NODEFAULTLIB 链接器选项时,我得到了数千个未解决的外部错误。
  • 我不确定 MSVC 世界是否支持静态链接。我知道有一些 MSDN 操作指南,但我不确定它们是否适合您的用例。
  • 非常感谢亚历克斯。我有静态链接的运行时。在配置属性->C/C++->代码生成->运行库。我将发布模式更改为多线程 (/MT) 选项,它是多线程 DLL。我可以在没有 VC 运行时的其他机器上运行 Java 应用程序。
猜你喜欢
  • 1970-01-01
  • 2021-06-10
  • 1970-01-01
  • 2022-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-09
相关资源
最近更新 更多