C ++,OLEDB,运行返回2列的查询:int和varchar(50)。
所以我想把它放在
中struct OutputData
{
int intID;
wchar_t* lpszName;
} outputData;
所以,我绑定
m_oleDBUtils.CreateDBBindings(true, &pRowsetBindings[0], 1,
offsetof(OutputData, intID), 4, DBTYPE_I4, 0,
DBPARAMIO_NOTPARAM);
m_oleDBUtils.CreateDBBindings(false, &pRowsetBindings[1], 2,
offsetof(OutputData, lpszName), 50, DBTYPE_WSTR | DBTYPE_BYREF, 0,
DBPARAMIO_NOTPARAM);
等。等
我为Win32构建。在Windows 7 x64(运行32位DLL!)下,它可以工作。在Windows XP x86下,我在前两个字符中获得了一致的垃圾(其余的字符串都很好)。而不是
One
Two
Three
我看到了
XXe
XXo
XXree
同样,所有记录的垃圾值都相同。我认为它是对齐的,但是/ Zp2,/ Zp4,/ Zp8和/ Zp16都表现出相同的行为。
有什么想法吗?
答案 0 :(得分:0)
切换到客户端拥有的内存,/ Zp1修复它。