我们的项目结构是,
native.dll
:-这包含用c\c++编写的纯本机代码。这个native.dll使用*def文件公开一些函数。
Wrapper Library(wrapper.dll compiled with .Net framework v4.0)
:-为了使用native.dll
的功能,使用:clr\oldsyntax
用C++\CLI
编写Wrapper lib(wrapper.dll)
。这个包装器有Interoperability
和Marshalling
的所有代码。
Application(Console App v4.0)
直接使用wrapper.dll
来使用native.dll
提供的功能。
现在,这个项目需要在.Net Core中运行。这意味着我们将有一个.Net Core application
,它将reference wrapper.dll
,它反过来将引用native.dll
。
我知道这不会直接起作用。但问题是 .Net Core(CoreCLR)是否支持 C++\CLI (clr\old语法)运行时环境
如果不是,该应用程序的可能解决方案是什么?
发布于 2016-10-25 12:21:54
.Net Core(CoreCLR)是否支持C++\CLI运行时环境?
据我所知,有没有使用.NET内核支持C++/CLI的计划。
如果不是,该应用程序的可能解决方案是什么?
您可以(应该)提供一个can。支持P/Invoke和.NET Core还支持P/Invoke (另见这个堆栈溢出问题和这张与DllMap相关的票)。
更新(2022-09-02):这个答案来自2016.关于最近的这核心版本,请参阅其他答案(例如,.Net )。
发布于 2019-09-24 00:38:19
正式宣布最终..。(下一个愿望.支持linux @ .Net 5 ^^)
https://devblogs.microsoft.com/cppblog/the-future-of-cpp-cli-and-dotnet-core-3/
C++/CLI将为针对.NET Core3.1和更高的的提供完全的IDE支持。这种支持将包括项目、IntelliSense和混合模式调试(IJW) .我们目前没有针对、macOS或Linux的C++/CLI计划。此外,使用“/clr:pure”和“/clr:safe”编译将不支持.NET核心。
C++/CLI的第一次公开预览就在眼前。VisualStudio2019 16.4预览1 “/clr:netcore”包含一个带有的更新编译器
Updat:来自原版的回复:“我们仍在开发IDE和MSBuild集成,所以我还不能很好地共享一个示例项目。一旦它可用,很可能使用16.4预览2或3”
(16.4 Preview1无法使用.NetCore项目创建C++/CLI。)
191015 16.4 Preview2释放。我试用了asp.net内核3.1和c++/CLI,它可以工作。(需要将平台设置为x64 -- asp.net内核和c++/CLI )
发布于 2019-08-05 13:00:38
.net核心团队只会提交(现在?)只为支持C++/CLI。
其目的是将其交付给.net Core3.0。虽然我在发行说明中还没有明确提到它,但C++/CLI支持是交付WPF (仅限windows)的先决条件,而.net Core3.0现在支持它。
此问题(#18013)将跟踪在CoreCLR上支持加载和运行混合模式程序集的进展情况。主要目标是在.NET核心上提供对WPF和其他现有C++/CLI代码的支持。有些工作将依赖于对MSVC编译器的更新。
@Tomas-Kubes,?-659号上面提到的github问题(#659)是关于跨平台C++/CLI的。
顺便说一句,我在am 2017/.NET-4.7的“clr\old语法”上收到了编译器警告。因此,这个编译器标志已经被废弃了。
https://stackoverflow.com/questions/39140014
复制相似问题