gpt4 book ai didi

c# - 使用 C++/CLI 桥连接 C++ 和 C# 代码

转载 作者:行者123 更新时间:2023-11-30 04:40:42 26 4
gpt4 key购买 nike

我有一个使用 native c++ dll 的 native c++ 代码的客户端应用程序。我正在研究将此代码与 c# dll 连接的可能性,因为它们更容易编写。我决定编写一个 c++/cli 桥 dll,它可以用 LoadLibrary 加载,并将调用传递给 c# dll。

客户端和dll之间的通信是这样的:客户端传递一个指向接口(interface)对象的指针,然后dll通过该接口(interface)对象与客户端通信。我将此对象包装在 c++/cli 桥接代码中,以便 c# 代码使用它。

桥还应该使用 __declspec(dllexport) 公开几个函数并将这些调用传递给 c# dll,因此它需要有一个指向它将传递它们的 c# 接口(interface)的指针。我想将 c# 对象与 gcroot<> 包装器一起使用,但问题是我在这两个 dll 之间获得了循环依赖性。 C# dll 需要引用桥 dll 才能使用包装类,桥 dll 需要引用 c# dll 才能使用接口(interface)类。

我知道我可以使用 COM 而不是使用 gcroot 包装 c# 对象,但我宁愿不这样做。有什么办法解决这个问题吗?

最佳答案

只需在 C++/CLI 而不是 C# 中定义接口(interface)。这完全消除了对 C# 项目的依赖。

我建议将 C++/CLI 项目视为包装器——不要在其中定义任何新接口(interface)。只需获取当前 C++ 代码中的内容,并将其包装在“ref 类”中,以便您可以从 C# 构造和调用它们。

关于c# - 使用 C++/CLI 桥连接 C++ 和 C# 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/878304/

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