在 C++/CLI 中访问非托管数组

Accessing Unmanaged Array in C++/CLI

我的主程序是用 C++/CLI(托管)编写的。我的某些硬件的 API 包含在 .C 文件中。在我的主程序中,我为非托管 C 代码调用 main(),它创建一个数组并与硬件一起工作。完成后,它会断开与硬件的连接,释放内存,然后 returns 到 C++/CLI 程序。

从非托管 C 代码访问(复制)该数组到托管 C++ 的好方法是什么?

参见How to: Pin Pointers and Arrays;示例代码是

#include <vector>
#include <algorithm>

#include <msclr/all.h>

using namespace System;

int main(array<System::String ^> ^args)
{
    constexpr size_t count = 100;

    std::vector<int> unmanged_ints;
    for (auto i = 0; i < count; i++)
        unmanged_ints.push_back(i);

    auto managed_ints = gcnew cli::array<int>(count);
    cli::pin_ptr<int> pManaged_ = &managed_ints[0];
    int* pManaged = pManaged_;

    std::copy(unmanged_ints.cbegin(), unmanged_ints.cend(), pManaged);

    return 0;
}