[问题] 请问要如何从C++传大量资料给C#处理?

楼主: don323 (咚薯叔)   2026-02-04 16:44:35
最近要试试看是否能将公司程式若干 dll 组件
从原本的 C++ 改成 C# 看看?
遇到一个问题,就是要如何比较有效率的
从 C++ 丢一大块资料给 C# 处理?
目前的解法是使用 gcnew,复制一大块传过去
做完再传回来。这样就要多 copy 两次。有没有机会
直接把 buffer pointer 直接传进去,省下这两次 copy?
目前的 code 大致如下。这是实际可跑的 code 简化示意如下
希望大家给个指导。谢谢
//
// in code.cpp
//
short * pData = ... // From some where
int iSize = 1000000;
cli::array<short>^ mdata = gcnew cli::array<short>(iSize);
int i; for (i = 0; i < iSize; i++) mdata[i] = pData[i]; // Copy data ...
pCSObject->CSFunc_Modify(mdata, iSize);
for (i = 0; i < iSize; i++) pData[i] = mdata[i]; // Copy data ...
//
// in code.cs
//
public void CSFunc_Modify(short[] mdata, int iSize)
{
for (i = 0; i < iSize; i ++)
{
mdata[i] = mdata[i] * 2;
}
}
作者: cancelpc (阿吉)   2026-02-04 17:47:00
内存映射档(虚拟内存)直接可以用指标玩预防有人把虚拟内存关掉,程式最好先检查。提醒,会关的应该也会开。这是系统层级的标准API
楼主: don323 (咚薯叔)   2026-02-04 18:49:00
请问一楼。有相关网页介绍可以参考吗?

Links booklink

Contact Us: admin [ a t ] ucptt.com