部署VB.NET程序无法在同一文件夹中找到dll

时间:2012-04-05 21:44:00

标签: vb.net deployment dll

我在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项目的方式。任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

如果我没记错的话,您希望您的应用程序能够与您在计算机上使用和工作的所有.dll文件一起运行。最简单的操作是发布程序或应用程序。但是首先,您必须按照以下步骤操作,以包括要让已发布程序使用的所有.dll文件。

  1. 单击Project标签,然后选择Add References…菜单。
  2. 在打开的新窗口中,使用Browse…选项卡找到要添加到项目中的文件,然后单击Add
  3. 然后从项目菜单中选择项目属性:例如,如果您的项目名为Johns_App,则在项目选项卡中,您将找到Johns_App Properties。单击此按钮,它将带您到新窗口。
  4. 在这个新窗口中,单击Publish标签,然后从Application Files…标签中,您可以检查,包括和排除项目文件。一切准备就绪。
  5. 我建议您使用Publish Wizard…,因为它会逐步指导您。

希望这会有所帮助

答案 2 :(得分:0)

找到指向同一问题的CodeProject page的链接。

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