在C /CLI中访问非托管阵列



我的主要程序用C /CLI(托管)编写。我的某些硬件的API包含在.c文件中。从我的主要程序中,我将其称为不受管理的C代码的Main(),该C代码可创建一个数组并与硬件一起使用。完成后,它与硬件断开连接,释放内存,然后返回到C /CLI程序。

什么是访问(复制)从未托管的C代码到托管的C ?

的好方法

请参阅如何:引脚指针和数组;示例代码是

#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;
}

最新更新