我有一个使用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的结果:
在dependendy walker中,我发现3 dll为红色,我不知道它们是否重要:
API.dll是第三方dll(myDLL是此API的包装器)
答案 0 :(得分:2)
错误表示myDLL.dll
本身或其中一个相关DLL无法在DLL search path上找到。
确保将myDLL.dll
放置在您的应用可以找到它的位置。您可以在有问题的计算机上将myDLL.dll
加载到Dependency Walker,以查明任何缺失的依赖项。