c# - 如何在 Visual Studio 中从 C++/CLI 和 C# 调用 C++/CLI?

标签 c# c++ visual-studio c++-cli

我不久前了解到 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 项目创建为 Class Library 项目,该项目编译成 .NET 程序集(DLL)。生成的 DLL 可以添加为 C# 项目的引用。

还有一件事,我不建议使用 C++/CLI 为非托管 C++ 类创建包装器。在这些情况下,最好将类转换为 COM 类(使用 ATL)。由于 .NET 与 COM 向后和向前兼容,因此可以直接从 C# 使用 COM 类,而无需创建任何包装器。当您需要在同一位置混合托管和非托管代码时,C++/CLI 非常适合,但每当您发现自己创建包装器时,您应该考虑改用 COM。

关于c# - 如何在 Visual Studio 中从 C++/CLI 和 C# 调用 C++/CLI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14178428/

相关文章:

c# - 使用 EF 迁移将列从一个表连同值一起移动到另一个表

c++ - 将类添加到 C++ 项目

c++ - C++ 中的彩色输出

c++ - Qt VS 工具 : error reading VS project settings

visual-studio - Visual Studio 2012 安装停留在 Microsoft Web Deploy 3.0 步骤

c# - Html.TextBoxFor 中的必需值

c# - 我怎样才能看到发送的实际原始请求

c# - 下拉列表中的选定值无效

c++调用没有点或this指针运算符的函数调用

python - 来自 C (Visual Studio) 的 CMD 命令