C ++,OLEDB运行查询返回两列: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都显示相同的行为。
有什么想法吗?
最佳答案
切换到客户端拥有的内存,并/ Zp1对其进行修复。