gpt4 book ai didi

visual-studio - 如何在 C++/CLI 中将托管引用传递给非托管代码?

转载 作者:行者123 更新时间:2023-12-01 13:00:47 25 4
gpt4 key购买 nike

我仅使用 C++/CLI 对 VS2010 中的非托管 C++ 代码进行单元测试。我将编译器切换到/clr 并使用静态库中的非托管代码。

我的测试类中有一个简单的 int 属性。我想将其作为 const int & 传递给 native C++ 中的函数。但它无法编译,我发现这是因为你不能像那样混合引用。

有什么方法可以做到这一点,我尝试遵循并且它正在工作,但是有更好的方法吗?

[TestClass]
public ref class MyTestClass
{
private:
int _my_property;
public:

[TestMethod]
void MyTestMethod()
{
MyNativeClass c;
// c.SomeMethod(_my_property) this doesn't work

int i = _my__property;
c.SomeMethod(i) // this works
}
}

最佳答案

C++ 引用实际上只是指针的语法糖。 C++ 指针指向内存中的特定点,而 CLI 引用可以由垃圾收集器自由移动。要将对托管内存中对象的引用传递给非托管代码,您需要固定指针。

更多信息和示例在另一个 SO 问题中:Convert from C++/CLI pointer to native C++ pointer

编辑2

我正在删除附加信息,因为它显然是错误的(感谢@Tergiver 和@DeadMG 的评论)。我也在制作帖子社区 wiki,所以请随意添加任何额外的正确信息。

关于visual-studio - 如何在 C++/CLI 中将托管引用传递给非托管代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6081585/

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