gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 19:52:35 24 4
gpt4 key购买 nike

我的主程序是用 C++/CLI(托管)编写的。我的一些硬件的 API 包含在 .C 文件中。在我的主程序中,我为非托管 c 代码调用 main(),该代码创建一个数组并与硬件一起工作。完成后,它会断开与硬件的连接,释放内存,然后返回到 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;
}

关于c - 在 C++/CLI 中访问非托管数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41044695/

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