2012-04-05 56 views
1

我在VB.NET中编写了一个程序,该程序使用了多个我在C++中编写的.dll文件。 dll包含程序旧版本的一些功能。在我的开发计算机上,一切正常,但我构建了发行版,将其复制到目标机器上,并将.exe启动正常。当程序尝试使用.dll中的函数时,它会引发异常并说“无法加载DLL”c:/ path/my.dll“找不到指定的模块。”部署VB.NET程序无法在同一个文件夹中找到dll

我不知道这有什么差别,但是我用的定义主VB项目的DLL函数:

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

我已经检查目标上的.NET Framework和第4版似乎与开发计算机安装相同。两者都是Windows XP机器。我不知道这是我编写.dll的方式,还是仅仅与我的vb.net项目有关。任何帮助表示赞赏。

回答

3

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

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

+0

如果你的意思是'MyFunction Lib“my.dll”',我试过了,它不起作用。 – user962342 2012-04-05 23:38:10

+0

我添加了dll作为资源并使用了相对路径,但得到了相同的结果 – user962342 2012-04-06 15:54:46

0

找到一个链接到CodeProject page引用了这个相同的问题。

基本上你需要检查DLL文件的所有依赖关系在运行位置是否可用。使用Microsoft Dependency Walker让我知道我的VB应用程序中使用的某个dll文件引用了另一个dll文件的解决方案。放置其他DLL与其他运行文件后没有更多的错误!

相关问题