在32位操作系统下查询的垃圾字符,在64位中很好

时间:2011-10-10 23:23:55

标签: c++ sql-server visual-c++ oledb

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都表现出相同的行为。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

切换到客户端拥有的内存,/ Zp1修复它。