gpt4 book ai didi

c# - C++/CLI 中的 System::IntPtr 到 int*

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:40:29 25 4
gpt4 key购买 nike

我正在尝试使用 C++/CLI 互操作层从 C# 应用程序调用现有的 C++ 库。我有一个看起来像这样的 C++ 函数:

void doSomething(int* foo, int size);

还有一个 C# 对象,它包含两个字段,一个 IntPtr start 和一个 int size。我编写了一个如下所示的托管 C++ 类:

public ref class Wrapper {
public:
void run(System::IntPtr itn, int size);
};

现在我想在 Wrapper::run 中调用 doSomething,并让 doSomething 可以访问 C# 对象指向的同一数据 block 。如果没有拷贝,我尝试做的事情是否可行?如果可以,怎么做?

最佳答案

要从Wrapper::run 调用doSomething,请尝试转换System::IntPtr::ToPointer 的返回值,像这样:

doSomething(reinterpret_cast<int*>(itn.ToPointer()), size);

关于c# - C++/CLI 中的 System::IntPtr 到 int*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14220611/

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