您使用CString :: GetBuffer()来获取TCHAR [] - 指向缓冲区的指针.如果编译时没有定义UNICODE就足够了 - TCHAR与char相同,否则你将不得不分配一个单独的缓冲区并使用WideCharToMultiByte()进行转换.
小智 5
我为此苦苦挣扎,但我现在使用的是:(UNICODE 友好)
CString strCommand("我要发送到 DLL 的文本。");
**
char strPass[256];
strcpy_s( strPass, CStringA(strCommand).GetString() );
Run Code Online (Sandbox Code Playgroud)
**
// CStringA 是 CString 的非宽/unicode 字符版本,然后这会将您的以 null 结尾的 char 数组放入 strPass 中。
另外,如果您控制另一端的 DLL,请将参数指定为:
const char* str参数
而不是
char str参数*
将“可能”为您转换 CStrings,默认转换通常是有效的。