[問題] 呼叫C++DLL時 傳string出現記憶體問題

看板C_Sharp (C#)作者 (ya)時間8年前 (2017/02/15 09:36), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串1/1
大家好 我在C++ DLL中寫了一個 void ABCDE(string A, string B, string C, int D, int E){ cout<< A;} 在C#調用建置通過,執行時卻出現下列訊息 "未處理的例外狀況: System.AccessViolationException: 嘗試讀取或寫入受保護的記憶 體。這通常表示其他記憶體已損毀。 於 std.basic_streambuf<char,std::char_traits<char> >.sputn(basic_streambuf<char\,std::char_traits<char> >* , SByte* , Int64 ) 於 std.operator<<<char,struct std::char_traits<char>,class std::allocator<char> >(basic_ostream<char\,std::char_traits<char> >* _Ostr, basic_string<char\,std::char_traits<char>\,std::allocator<char> >* _Str) 於 c:\program files (x86)\microsoft visual studio 12.0\vc\include\string: 行 196 " 請問這是甚麼原因?是不能傳string嗎? 另外我如果要用到C++ opencv中的copyto,resize 函數,想轉換成C# 會比較建議使用EmguCV還是包成DLL呢? 不好意思麻煩大家有想法的人回答一下了 不勝感激 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.227.176.85 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1487151411.A.E42.html

02/15 21:35, , 1F
你可以查查std::string跟.NET string的差別
02/15 21:35, 1F

02/15 21:36, , 2F
可用char*, wchar*, byte*, BSTR, SAFEARRAY等方式傳遞
02/15 21:36, 2F
文章代碼(AID): #1Of24pv2 (C_Sharp)
文章代碼(AID): #1Of24pv2 (C_Sharp)