开发平台(Platform): (Ex: Win10, Linux, ...)
Windows XP
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
VC++ 2008
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
无
问题(Question):
小弟平常只写C# 但目前有一只C++的API要使用
这一只API假设是 HResult void ExampleAPI( *LPCOLESTR Answer);
说明书上是说编码方式统一是Unicode (对编码没有说非常理解 只知道要用wchar_t)
预期是C#端利用P/Invoke呼叫一只我自行建立的的C++函式,这只函示会呼叫到所需的API
C++:
这边是我自己写的C++函式,做了一些事情后来呼叫那只范例API
HResult void MyCPlusPlusFun( wchar_t* ReturnAnswer){
//...do Something....
// Start call API
LPCOLESTR temp;
HResult hr = ExampleAPI( &temp );
ReturnAnswer = temp;
return hr;
}
这边temp成功取得字串L"happy" 也成功转给ReturnAnswer(Debug mode确认内容)
C#:
string ReturnValue="";
int result = MyCPlusPlusFun( ReturnValue );
但程式跑完了之后,ReturnValue都是空值Orz
试过C#这边用StringBuilder,也是一样的问题
感觉问题是在c++端,但乱试过其他种字串储存char*
也没有用Orz
应该是对c++编码这边太不熟了 但时间上可能没办法让我慢慢学C++
不晓得有没有大大知道我错误的地方在哪
若是关于Unicode的叙述有什么错误也希望不吝指正 感谢
喂入的资料(Input):
C#端:
string ReturnValue="" ;
预期的正确结果(Expected Output):
C#端:
string ReturnValue=L"happy";
错误结果(Wrong Output):
string ReturnValue="";
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
只有一点点,在上述内文中有提及就不重复贴上影响阅读
补充说明(Supplement):
希望C++或是有常在C#与C++中做呼叫的大大可以指证一下我的错误Orz
感谢!