我在一个c++项目中使用了这个方法
long CPPProject::CPPMethod(long lValue, LPCTSTR Data){
do something...
}
但是,当我通过c#项目使用该方法时,有时Data的值是'?'例如:
c#代码:
String sText1 = "u0110 u0110"; //Đ
object.CPPMethod(lValue, sText1);
在本例中,'Data'变量正确地接收了值(Đ)。
但是另一方面,如果代码是: c#代码:
String sText2 = "u8162 u8162";//腢
object.CPPMethod(lValue, sText2);
'Data'的值是'?'
我将Data的值写入日志文件。
为什么会有这种行为?我需要修复什么?
我将LPCTSTR
替换为LPCWSTR
基本上是因为;LPCWSTR
为const WCHAR *
,LPCTSTR
为TCHAR *
,此外,在DISP_FUNCTION
中,VTS_BSTR
必须更改为VTS_WBSTR
。
执行此操作后,收到的值没有错误