部署 .NET C++/CLI DLL 的先决条件?

Posted

技术标签:

【中文标题】部署 .NET C++/CLI DLL 的先决条件?【英文标题】:Prerequisites for deploying a .NET C++/CLI DLL? 【发布时间】:2013-09-17 20:11:01 【问题描述】:

我编写了一个 C++/CLI DLL 用于我的 GUI .NET 应用程序。在我的本地开发机器上,一切都按预期工作。不过,我的 GUI 应用程序说它无法在任何其他机器上加载我的 C++/CLI DLL。它总是说它无法加载我的 DLL 或其依赖项之一。所以我在想也许是缺少 C 运行时之类的?

在另一台机器上使用我的 C++/CLI DLL 之前是否需要安装任何先决条件?严格来说,从 .NET 或 C++ 运行时的角度来看。

编辑:对不起。它是 VS2012、.NET 4.0、Platform Toolset v110。

【问题讨论】:

"无法加载" = BadImageFormatException?然后是 32 位与 64 位的问题。您使用的是 .NET 4.5 吗? 您需要更好地记录 VS 版本和运行时错误。但是,是的,C++/CLI 程序集有 C++ 运行时支持 DLL 的先决条件。 .NET 版本是一个。 抱歉,我更新了问题。我正在使用 VS2012、.NET 4.0 和平台工具集 v110。 【参考方案1】:

除了其他 .Net 语言具有的依赖项(例如 .Net 框架)之外,C++/CLI 还需要 C++ 运行时。

您可以download Microsoft 为 VS 2012 重新分发 C++ 运行时。根据您的 C++/CLI 程序集的编译设置选择 x86 或 x64 版本,而不是目标计算机正在运行的 Windows 版本。

请注意,这只是 Release 编译的运行时。 Debug 编译使用不同的运行时,它没有可再发行组件,并且仅与 Visual Studio 一起安装。

【讨论】:

谢谢。就是这样。我正在部署我的 C++/CLI 调试编译的 DLL。我不得不将它切换到发布配置,它现在可以工作了。

以上是关于部署 .NET C++/CLI DLL 的先决条件?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 Linux 上使用 .Net Core 3.1 创建 C++/CLI 代码的 C# DLL

非托管C++通过C++/CLI包装调用C# DLL

在 C++/CLI 中使用时未创建 C# 应用程序 log4net 日志文件

避免在 C++/CLI 项目中加载 .Net Dlls?

C++/CLI 混合模式 DLL 创建

C++/CLI 为啥对托管不可见