楼主:
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;
}
}