C++/CLI targetting .NET Core 3.1
C++/CLI targetting .NET Core 3.1
.NET Core 3.1增加了对C++/CLI的支持(宣布.NET Core 3.1(。官方公告列出了两个新的项目模板,CLR 类库(.NET Core(和CLR Empty Project(.NET Core(,我们确实可以找到和使用它们。
但是,没有有关支持技术(如 WPF 或 Windows 窗体(的其他信息。在九月份的一篇博客文章中,Microsoft说:
我们致力于支持.NET Core的C++/CLI,以实现轻松 C++代码库与 .NET 技术(如 WPF 和 窗口窗体。当 .NET Core 3.0 时,此支持不会准备就绪 首次发布,但它将在 .NET Core 3.1 中提供,该版本随附 与Visual Studio 2019 16.4
使用Visual Studio 2019 16.4.x并面向.NET Core 3.1,我尝试使用C++/CLI创建一个演示WinForms应用程序。但是,它不起作用。
首先,面向 .NET Core 的 C++/CLI 项目必须是 DLL:
错误 NETSDK1116:面向 .NET Core 的C++/CLI 项目必须是动态的 图书馆。
因此,我尝试将 Win Forms 代码保存在使用/clr:netcore
编译的 C++/CLI DLL 中,并从本机应用程序运行它。但是,我收到运行时异常:
未处理的异常。系统错误图像格式异常:无法加载 文件或程序集 'System.Windows.Forms, 版本=4.0.0.0, 区域性=中性,公钥令牌=b77a5c561934e089'。进行了尝试 加载格式不正确的程序。文件名: 'System.Windows.Forms, version=4.0.0.0, Culture=Neutral, PublicKeyToken=b77a5c561934e089' ---> System.BadImageFormatException: 尝试加载格式不正确的程序。 (0x8007000B(
我在 C++/CLI 项目中引用了System.Windows.Forms.dll来自 c:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App\3.1.0\,这是Microsoft.WindowsDesktop.App 3.1.0运行时的位置。
这应该有效,而我没有做正确的事情吗?
我在使用 C++/CLI(托管C++(.Net Core DLL 的 .NET Core C# 可执行文件的简单示例时遇到了类似的问题。最终发现我需要将我的 C# 可执行目标从任何 CPU显式设置为x64。大多数情况下,它归结为32位/64位不匹配。
我在微软的网站上找到了这个文档。 它解释了如何做到这一点,并附有一个 github 存储库,您可以轻松克隆并自己试用: https://devblogs.microsoft.com/cppblog/porting-a-c-cli-project-to-net-core/
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- 在 C++/CLI 中将 .NET 事件从一个 DLL 引发到另一个 DLL
- 如何在 64 位 vb.net Windows 应用程序中引用 32 位 dll
- C++包含来自 #include "DevEngine/Core.h" 的错误
- 是否可以在Linux上使用.Net Core 3.1创建C++/CLI代码的C#DLL
- C++ DLL(不是 CLI)是否可以调用 .NET Core 3.0 委托?
- C++/CLI targetting .NET Core 3.1
- 是否有可能构建面向Linux和Windows的.Net Core C++ / CLI应用程序?
- 在.NET Core 3.1中运行托管C++/CLI程序集时,映像格式错误
- 无法将 c# .Net Core 3.0 与 directx 9.0 依赖项链接
- 如何从.NET Core调用cygwin编译的C++
- 在.NET Core中是否有与DllImport等效的Linux?
- 将结构数组从 C#(.NET Core) 传递到 C++(unamnaged)
- Linux 上的 .NET Core - 元帅结构
- .NET CORE 2 DLL引用带有C 代码运行时错误
- Visual Studio 2017 .Net Core 2.0 Angular Publish Fails
- 从C++调用 (C#) .NET Core 方法
- 调用从.NET Core中的C++项目构建的.dll时出现BadImageFormatException
- 混合模式程序集(C++/CLI项目)在.NET Core上工作吗
- 如何在.net Core项目中添加c++库