C#Dll导入无法使用某些计算机

时间:2016-07-30 16:25:31

标签: c# c++ dll

我有一个使用VS2013编译的C ++ DLL。

我在我的C#应用​​程序中这样称呼它:

[DllImport("myDLL.dll", EntryPoint = "RestartIfNecessary", CallingConvention = CallingConvention.Cdecl)]
        public static extern bool RestartIfNecessary(uint uiAppId);

它运作正常。

但是,一旦应用程序处于prod状态,某些用户就会出现以下错误: 无法加载DLL' myDLL.dll':找不到指定的模块。 (HRESULT异常:0x8007007E)

我无法找到在某些计算机上发生此错误的原因。我们已经能够通过删除Microsoft Visual C ++ 2013 Redistributable(x86)和(x64)并再次安装它们来解决某些用户的问题。

我的C#应用​​程序被编译为在x86上运行。 我有一个64位的W10,它工作正常,所以我不知道它是否与windows有关。

您有任何提示可以帮助我解决此问题吗?

编辑:以下是依赖性walker的结果:

enter image description here

在dependendy walker中,我发现3 dll为红色,我不知道它们是否重要: enter image description here

API.dll是第三方dll(myDLL是此API的包装器)

1 个答案:

答案 0 :(得分:2)

错误表示myDLL.dll本身或其中一个相关DLL无法在DLL search path上找到。

确保将myDLL.dll放置在您的应用可以找到它的位置。您可以在有问题的计算机上将myDLL.dll加载到Dependency Walker,以查明任何缺失的依赖项。