如何在Visual studio中从c++ /CLI和c#调用c++ /CLI
How to call C++/CLI from C++/CLI and C# in Visual studio?
我不久前才知道c++/CLI是使用非托管c++代码的一种方式。我能够弄清楚如何在c++/CLI项目中调用c++项目中的代码,而c++代码位于静态库中。c++代码在静态库中,c++/CLI代码在Win32应用程序中。
然后我想将c++/CLI项目转换为静态库(从现在起称为包装器),并创建另一个"消费者"项目(c++/CLI或c#)来调用包装器。这就是我被困住的地方。
在c#中,链接项目是很容易的。您所需要做的就是将使用者项目的引用添加到库项目中。如何从c++/CLI或c#项目转换为c++/CLI项目?好,这是主要问题。我的最终目标是能够自由地从c#切换到c++/CLI到c++,无论是使用dll还是静态库,但我必须先解决我目前的问题。
在c#中,你不能添加对c++/CLI静态库(.lib)的引用,因为.lib是c++特有的。相反,您需要将c++/CLI项目创建为类库项目,该项目可编译为。net程序集(DLL)。生成的DLL可以作为c#项目的参考添加。
还有一件事,我不建议使用c++/CLI为非托管的c++类创建包装器。在这些情况下,最好将类转换为COM类(使用ATL)。由于。net是向后和向前兼容的,COM类可以直接从c#中使用,而不需要创建任何包装器。当你需要在同一个地方混合托管和非托管代码时,c++/CLI是很好的选择,但是当你发现自己在创建包装器时,你应该考虑使用COM。
相关文章:
- 在 C++/CLI 中将 .NET 事件从一个 DLL 引发到另一个 DLL
- C++/CLI System.AccessViolation在托管类中调用非托管函数时出现异常
- 是否可以在Linux上使用.Net Core 3.1创建C++/CLI代码的C#DLL
- C++ DLL(不是 CLI)是否可以调用 .NET Core 3.0 委托?
- VS2010 C++ 调试托管 (C++/CLI) DLL
- 如何将 C++/CLI 库链接到C++应用程序
- C++/CLI targetting .NET Core 3.1
- 模板函数签名在 C++/CLI 中解包
- C++/CLI 混合托管/本机 DLL 不起作用
- C++/CLI 和 C#/VB 与不安全和外部有什么区别?
- 是否有可能构建面向Linux和Windows的.Net Core C++ / CLI应用程序?
- DirectX 12 和 C++ CLI :无法使用IID_PPV_ARGS
- 如何为要在 C# 中使用的静态库创建 C++ 或 C++/CLI 包装器
- 将 C# 对象(包含静态对象成员)作为参数传递给 C++/CLI 程序
- C++/CLI -- 访问结构成员
- 如何将字符串从 C++/CLI 方法返回到调用它的非托管C++
- 如何将CLI类的函数指针作为参数传递给C++方法
- 用于LabView中使用的本机c++的c++/cli dll包装器
- C#WPF和C++/CLI以及C++在C++/CLI中添加外部库错误
- 在.NET Core 3.1中运行托管C++/CLI程序集时,映像格式错误