C#应用程序无法加载非托管c ++ DLL

时间:2014-09-24 19:37:39

标签: c# c++ .net visual-studio-2012 dll

我遇到类似的问题,其他人使用托管c#应用程序调用非托管c ++ dll,但是我找不到可行的解决方案。我已将第三方非托管dll包含在项目中,并将发布后的clickOnce包含在同一目录中。
我将我的c#项目编译为32位。发布版本使用visual studio 2012在我的开发系统和其他系统上运行。

[DllImport(@"controller.DLL", CallingConvention = CallingConvention.Cdecl)]
public static extern int XR2_hexCmnd(int xr2Hex_command);

在没有visual studio 2012的其他电脑上运行时,我收到以下错误: System.DllNotFoundException:无法加载DLL' controller.DLL':找不到指定的模块。 (HRESULT异常:0x8007007E)

使用clickOnce发布时出现同样的错误。

我有InstallShield的演示版。当我运行InstallShield时,它适用于任何PC。如果我卸载该程序,请单击“一次”(在使用installShield之前它无效)。创建InstalShield安装程序时,它发现存在MSVCR110.dll的依赖关系(我在使用publish创建的项目目录中包含此dll,并且在运行InstallShield之前它仍然无效)。

Dependency Walker似乎不适合这个项目。据报道,即使在PC工作的地方,也有很多dll缺失。我包含了所有丢失的dll,并且在使用installShield之前应用程序仍然无效。

不幸的是,InstallShield不是一个选项,因为该应用程序将被合并到更大的应用程序中。

0 个答案:

没有答案