我在 Visual Studio 2012 上使用 WPF 构建了一个 C# 应用程序,该应用程序使用 C++ DLL 并以 .NET4.5 为目标。我有两个项目正在运行,一个用于 C# 项目,另一个用于 C++ DLL 项目。我将这两个项目发布到一个文件夹中,该文件夹在同一文件夹中包含一个.exe
用于 C# 和一个.dll
用于 C++ 的文件夹。
我在开发它们的机器上运行它们,一切正常。我.exe
在其他机器上运行它,它抛出了这个异常:
System.DllNotFoundException:无法加载 DLL
它无法识别同一文件夹中的 DLL。
我尝试了很多东西,但似乎没有任何效果。我遵循了这篇文章中的解决方案,但没有任何效果。
Dev 和 Target 机器是相同的。在 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 添加什么可以使应用程序工作的任何想法?