【问题标题】:Deploying VB.NET program can't find dlls in same folder部署 VB.NET 程序在同一文件夹中找不到 dll
【发布时间】:2012-04-05 21:43:59
【问题描述】:

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

【问题讨论】:

    标签: vb.net deployment dll


    【解决方案1】:

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

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

    【讨论】:

    • 如果你的意思是 MyFunction Lib "my.dll" ,我试过了,它不起作用。
    • 我将 dll 作为资源添加并使用了相对路径,但得到了相同的结果
    【解决方案2】:

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

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

    希望对你有帮助

    【讨论】:

      【解决方案3】:

      找到了指向 CodeProject page 的链接,该链接引用了同样的问题。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-23
        • 1970-01-01
        • 2015-04-25
        • 2012-08-24
        相关资源
        最近更新 更多