调用C++dll的C#dll在windows 10上找不到该dll

C# dll calling a c++ dll cannot find the dll on windows 10

本文关键字:找不到 dll windows C++dll C#dll 调用      更新时间:2023-10-16

我创建了一个调用c++dll的c#dll。为此,我正在做一个简单的DLL导入。这在我所有的Windows7机器上都运行得很好,但现在我试着在Windows10上运行它。。当执行c#函数时,我得到一个错误,即找不到调用的c++dll。(System.DllNotFoundException).

c#和c++dll在同一目录中。我试图将这两个文件都复制到调用c#库的exe文件中->没有运气

我试图将两个文件都复制到system32->,但没有成功。

我必须在哪里复制它们,以便c#"看到"c++dll?有没有办法告诉窗口在哪里搜索?

感谢的帮助

编辑:C#和C++dll是用"Visual Studio Express 2015"开发的。在windows 10系统上,我安装了Microsoft Visual C++1010/2012/2013/2015 Redistributable x86/x64例外情况是:对.NET成员"function_Cs"的调用内部发生异常:System.DllNotFoundException:DLL"The_C++_library.DLL":Das angegebene Modul wurde nicht gefunden。(HRESULT的Ausnahme von 0x8007007E)不存在。bei C#库.C#库.function(Int32a,Int32b,Int32&res)

问题不在于C++DLL放错了地方;问题是无法加载。最有可能的是,它依赖于Windows 10上默认不可用的Microsoft C++运行库版本。您可以通过Dependency Walker检查依赖DLL的状态来验证这一点。您可以:

  • 安装适当版本的运行时OR
  • 静态链接您的C++DLL

重新编译源代码(不做任何更改)后,dll可以毫无问题地执行。奇怪,但这是解决方案。无法工作的dll大约有6个月大,可以在其他Windows7计算机上工作。