日期:2014-05-17  浏览次数:21018 次

C#调用C++DLL输出字符串
现在我想调用C++写的win32DLL函数,输出字符串。
DLL中的CPP函数:
XXX_API void __stdcall WriteString(wchar_t* content)
{
   std::cout<<content;
}

C#cs:
[DllImport(@"...XXX",EntryPoint = "WriteString")]
extern unsafe static void WriteString(char* c);
static void Main(string[] args)
{
   unsafe
  {
     fixed(char* p = &("hello".ToCharArray()[0]))
     {
       WriteString(p);
     }
   }
}

问题来了,固化字符串的内存地址后p的值是0X00BBA654,*p 值为 0x0067 ‘h’
但是在控制台输出的不是hello,而是00bba654,问题出在哪了,希望懂得帮帮忙。
谢谢。
C++ C#

------解决方案--------------------
std::wcout