作者lwuanma (ya)
看板C_Sharp
标题[问题] 呼叫C++DLL时 传string出现记忆体问题
时间Wed Feb 15 17:36:48 2017
大家好
我在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://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1487151411.A.E42.html
1F:推 yeo1987: 你可以查查std::string跟.NET string的差别 02/15 21:35
2F:→ yeo1987: 可用char*, wchar*, byte*, BSTR, SAFEARRAY等方式传递 02/15 21:36