【发布时间】:2016-02-23 11:56:12
【问题描述】:
我正在为应用程序创建一个 DLL。应用程序调用 DLL 并接收长度为 8 到 50 的字符串。
我遇到的问题是只显示应用程序收到的任何消息的第一个字母。
下面是GetMethodVersion函数。
#include "stdafx.h"
STDAPI_(void) GetMethodVersion(LPTSTR out_strMethodVersion, int in_intSize)
{
if ((int)staticMethodVersion.length() > in_intSize)
return;
_tcscpy_s(out_strMethodVersion, 12, _T("Test"));
//staticMethodVersion should be insted of _T("Test")
}
项目设置设置为 Unicode。 经过一些研究,我相信 Unicode 格式及其功能存在问题。感谢您提供的任何帮助。
【问题讨论】:
-
为什么代码中有
out_strMethodVersion、staticMethodVersion、out_String三个字符串? -
对不起,删除了一堆不必要的代码,一定错过了重命名
-
您在哪里看到单个字母,在 Visual Studio 的一个调试窗口中,或者在控制台或应用程序的 GUI 中?也许字符串是 Unicode,但 Visual Studio 认为它不是?直接看内存中的字符串,看看有没有其他用00字节分隔的字母。
-
问题是我们必须在这里猜测很多,因为提供的示例不完整。给我们一个示例,我们可以粘贴并编译并观察问题(首先像我们一样自己编译示例,并确认问题在示例中仍然存在,就像在您的原始代码中一样)。
标签: c++ dll unicode lptstr lpwstr