当应用程序在不同的系统

时间:2017-09-12 12:23:18

标签: c# c++

我在c#中开发包含c ++ dll的应用程序。 我使用DllImport导入dll。 我的应用程序在我的系统中正常工作但是,当我从不同的系统测试应用程序时,它会抛出

  

"无法加载dll异常"

并在catch块中显示错误

  

"未找到Dll"

我也使用

打印路径
System.IO.Path.GetFullPath("abc.dll")

我将dll放在返回路径中。 现在解决方案是什么?所以我可以从不同的系统运行应用程序。 非常感谢。

2 个答案:

答案 0 :(得分:0)

从 - https://forums.asp.net/t/939729.aspx?Unable+to+load+DLL+foo+dll+The+specified+module+could+not+be+found+Exception+from+HRESULT+0x8007007E+

下面的解决方案复制

您需要确定应用程序(直接或间接)引用了哪些托管dll,本机dll和lib文件。

对于托管dll,请确保它们位于网络的bin文件夹中。

对于本机dll和.lib文件,请检查这些.dll和.lib文件是否在PATH中。如果没有,你可以将它们复制到那里;或者,您可以将它们放入文件夹并将该文件夹添加到PATH中。然后重新启动VS和IIS(命令" iisreset")以确保拾取设置。

在该解决方案中,他使用以下样本解决方案重现了此错误

  1. Web1引用托管的c ++项目说" MCpp1.dll"。该项目进一步引用了两个非托管的c ++项目,输出结果为" Lib1.lib"和" Lib2.lib"

  2. 如果我将所有这些文件复制到网络的bin文件夹中,我会得到"模块未找到错误"的例外。

  3. 我创建一个文件夹说" C:\ Lib"并复制" Lib1.lib"和" Lib2.lib"进入它并将此文件夹添加到PATH中。我重新启动VS,并运行" IISReset"因为我有一个IIS网站

  4. 打开VS并请求页面,现在可以使用

答案 1 :(得分:0)

您可以查看项目属性 - >链接器 - >输入或附加库目录,其中包含您的c ++ dll路径。