[問題] 請問要如何從C++傳大量資料給C#處理?

看板C_Sharp (C#)作者 (咚薯叔)時間1天前 (2026/02/04 16:44), 編輯推噓2(204)
留言6則, 2人參與, 1天前最新討論串1/1
最近要試試看是否能將公司程式若干 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; } } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.137.21.207 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1770194679.A.4F8.html

02/04 17:47, 1天前 , 1F
記憶體映射檔(虛擬記憶體)
02/04 17:47, 1F

02/04 17:48, 1天前 , 2F
直接可以用指標玩
02/04 17:48, 2F

02/04 18:33, 1天前 , 3F
預防有人把虛擬記憶體關掉,程式最好先檢查。提醒,會關
02/04 18:33, 3F

02/04 18:33, 1天前 , 4F
的應該也會開。
02/04 18:33, 4F

02/04 18:34, 1天前 , 5F
這是系統層級的標準API
02/04 18:34, 5F

02/04 18:49, 1天前 , 6F
請問一樓。有相關網頁介紹可以參考嗎?
02/04 18:49, 6F
文章代碼(AID): #1fWmRtJu (C_Sharp)
文章代碼(AID): #1fWmRtJu (C_Sharp)