我在VB.NET中编写了一个程序,它使用了几个我用c ++编写的.dll。 dll从旧版本的程序中包含一些函数。在我的开发计算机上一切正常但我构建了一个发行版本,将它和dll复制到目标机器上,并且.exe启动正常。当程序试图使用.dll中的函数时,它会抛出异常并说“无法加载DLL”c:/ 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项目的方式。任何帮助表示赞赏。
使用相对于可执行文件的路径,而不是绝对路径。
或者,更好的是,根本不使用路径,只列出dll文件的名称。然后将dll作为资源添加到项目中。然后,您应该能够轻松地将安装项目内部捆绑在一起,并且它们将自动最终放在正确的位置进行调试和部署。
如果我没有弄错的话,您希望您的应用程序能够与您在机器上使用和使用的所有.dll
文件一起使用。最简单的方法是发布您的程序或应用程序。但首先,您必须按照以下步骤操作才能包含您希望已发布程序使用的所有.dll
文件。
Project
选项卡并选择Add References…
菜单。Browse…
选项卡找到要添加到项目中的文件,然后单击Add
。Johns_App
,那么在项目选项卡中,您将找到Johns_App Properties
。单击此按钮,将转到新窗口。Publish
选项卡,然后从Application Files…
选项卡中,您可以检查,包含和排除项目文件。那你就定了。Publish Wizard…
,因为它会一步一步引导你。希望这可以帮助
找到了引用同样问题的CodeProject page的链接。
基本上,您需要检查DLL文件的所有依赖项是否在运行位置可用。使用Microsoft Dependency Walker使我得到了一个解决方案,即我的VB应用程序中使用的一个dll文件引用了另一个dll文件。将其他DLL与其他运行文件放在一起后不再出错!