DLL文件应该放在哪里?

4

我正在使用DLL文件在我的Java项目中调用C++方法。目前,我已经硬编码了路径。

这个应用程序将部署在许多机器上,并且它也可以在多台机器上运行。我应该把我的DLL文件放在哪里,以便在任何机器上都能加载它并调用它?


2
顺便提一下 - 在 Mac 或 *nix 机器上没有可以放置 DLL 并加载它的地方。你有这些平台的本地文件吗? - Andrew Thompson
3个回答

2
我见过一些应用程序将DLL文件放入JAR文件中。运行时,它们会将DLL文件从JAR中提取到临时目录中,然后在那里访问它。
虽然这不是最有效的方法,但从部署的角度来看,这是最简单的方法。

1
"这不是最高效的方法,但是最简单的方法" 使用Java Web Start部署本地应用程序更容易。 - Andrew Thompson

1

你必须确保你的DLL在类路径中。

其中一种方法是将DLL的路径放入PATH环境变量中。

另一种选择是将其添加到VM参数中的变量LD_LIBRARY_PATH中,像这样:

java -Djava.library.path=/path/to/my/dll -cp /my/classpath/goes/here MainClass

如果您正在开发一个复杂的应用程序,并且需要保证其稳定性,那么您必须确保所需的 DLL 被放置在操作系统会查找的某个位置,可能需要考虑使用安装程序/脚本。

0

C:\WINDOWS\system32(假设C盘是安装Windows的驱动器,可能可以从注册表中获取)

我以前使用过Windows很长时间,但不是专家,所以我为您进行了谷歌搜索,并找到了链接http://vlaurie.com/computers2/Articles/dll.htm

请参阅链接中的最后一个主题(以Using Regsvr32.exe to Register DLLs开头的主题)


regsrv32仅能注册COM / ActiveX .dll文件,而且只能注册带有DllRegisterServer()条目的.dll文件。可能在这种情况下不适用。 - paulsm4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接