System.DllNotFoundException:无法加载DLL。 在开发机器没有错误,但在目标机器错误

我在Visual Studio 2012上用WPF构build了一个C#应用程序,该应用程序使用C ++ DLL并以.NET4.5为目标。 我有两个项目正在运行,一个用于C#项目,另一个用于C ++ DLL项目。 我将这两个项目发布到一个文件夹中,该文件夹在C#中具有.exe ,在同一个文件夹中具有C ++中的.dll

我在他们开发的机器上运行它们,一切正常。 我在其他机器上运行.exe ,并引发此exception:

System.DllNotFoundException:无法加载DLL

它不识别在同一个文件夹中的DLL。

我尝试了很多东西,似乎没有任何工作。 我在这个post后面的解决scheme,但没有任何工作。

开发和目标机器是相同的。 在Dev中,安装了Visual Studio 2012,但这是唯一的区别。

码:

C#:

 [DllImport(@"Wireless.dll", EntryPoint = "?cert_exists@certificate@CertFuncs@@SAHHPBD@Z", CallingConvention = CallingConvention.Cdecl)] static extern int cert_exists(int store, [MarshalAs(UnmanagedType.LPTStr)]string cert_str); 

C ++:

 static int __declspec(dllexport) cert_exists(int type, LPCSTR cert_str); 

更新:

如果我在目标机器上安装Visual Studio 2012,一切工作正常。 如果我删除它,应用程序再次崩溃。 任何关于什么VS添加的想法可以使应用程序工作?

只是猜测:在用户的机器上安装Microsoft Visual C ++ 2012 Redistributable Package。 您使用的本机DLL可能有其他依赖关系,必须安装(尝试依赖关系的步行者 )。 如果本机DLL需要例如注册表设置,配置文件等,这些也应该存在。 它应该像安装在开发机器上一样分配给用户机器。

这是由于您的项目构建配置为“调试”(右键单击解决方案“ – >属性 – >”配置属性 – >您应该看到所有的项目配置设置为“调试”)。 它需要在运行exe的任何地方安装visual studio(这是建立在“调试”模式)。

为了避免这种情况,请将配置更改为“发布”并重建您的项目。