1

我在 VB.NET 中编写了一个程序,它使用了几个我用 c++ 编写的 .dll。dll 包装了旧版本程序中的一些功能。在我的开发计算机上一切正常,但我构建了一个发布版本,将它和 dll 复制到目标机器上,.exe 启动正常。当程序尝试使用 .dll 中的函数时,它会抛出异常并显示“无法加载 DLL”c:/the path/my.dll”,找不到指定的模块。”

我不知道它是否有任何区别,但我在主 vb 项目中使用以下方法定义 dll 函数:

Declare Function MyFunction Lib "c:/the path/my.dll" (ByVal in1 as Double, ByRef out1 as Double) as Integer

我检查了目标上的 .net 框架,版本 4 似乎与开发计算机安装相同。两者都是windows XP机器。我不知道这是我编写 .dll 的方式,还是我的 vb.net 项目的方式。任何帮助表示赞赏。

4

3 回答 3

3

使用相对于您的可执行文件的路径,而不是绝对路径。

或者,更好的是,根本不使用路径,只列出 dll 文件的名称。然后将 dll 作为资源添加到您的项目中。然后,您应该能够轻松地将设置项目捆绑在内部,它们将自动在正确的位置进行调试和部署。

于 2012-04-05T21:46:56.747 回答
1
于 2018-08-30T21:18:14.483 回答
0

找到了一个指向同样问题的CodeProject 页面的链接。

基本上,您需要检查 DLL 文件的所有依赖项在运行位置是否可用。使用 Microsoft Dependency Walker 使我找到了解决方案,即我的 VB 应用程序中使用的一个 dll 文件引用了一个不同的 dll 文件。将其他 DLL 与其他运行文件一起放置后,不再出现错误!

于 2015-10-16T16:11:19.640 回答