微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – System.DllNotFoundException:无法加载DLL. Dev机器中没有错误,但目标机器中有错误

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

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

System.DllNotFoundException: Unable to load DLL

它无法识别同一文件夹中的DLL.

我尝试了很多东西,似乎什么都没有用.我在this post中遵循了解决方案但没有任何效果.

开发和目标机器完全相同.在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可能具有必须安装的其他依赖项(尝试Dependency Walker).如果本机DLL需要例如注册表设置,配置文件等,这些也应该存在.它应该像在开发机器上安装它一样分发给用户机器.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐