gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 02:57:48 24 4
gpt4 key购买 nike

我不久前了解到 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com