我在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项目的方式。任何帮助表示赞赏。
答案 0 :(得分:3)
使用相对于可执行文件的路径,而不是绝对路径。
或者,更好的是,根本不要使用路径,只列出dll文件的名称。然后将dll作为资源添加到项目中。然后,您应该可以轻松地将安装项目内部捆绑在一起,并且它们将自动最终放在正确的位置进行调试和部署。
答案 1 :(得分:1)
如果我没记错的话,您希望您的应用程序能够与您在计算机上使用和工作的所有.dll
文件一起运行。最简单的操作是发布程序或应用程序。但是首先,您必须按照以下步骤操作,以包括要让已发布程序使用的所有.dll
文件。
Project
标签,然后选择Add References…
菜单。 Browse…
选项卡找到要添加到项目中的文件,然后单击Add
。 Johns_App
,则在项目选项卡中,您将找到Johns_App Properties
。单击此按钮,它将带您到新窗口。 Publish
标签,然后从Application Files…
标签中,您可以检查,包括和排除项目文件。一切准备就绪。Publish Wizard…
,因为它会逐步指导您。希望这会有所帮助
答案 2 :(得分:0)
找到指向同一问题的CodeProject page的链接。
基本上,您需要检查DLL文件的所有依赖项是否在运行位置可用。使用Microsoft Dependency Walker使我得到了一个解决方案,即我的VB应用程序中使用的一个dll文件引用了另一个dll文件。将其他DLL与其他运行文件放在一起后不再出错!