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);
Etc. и т.д.
Я строю для Win32. Под Windows 7 x64 (работает 32-битная DLL!) Это работает. В Windows XP x86 я получаю постоянный мусор в первых двух символах (с остальной строкой все в порядке). Так что вместо
One
Two
Three
Понятно
XXe
XXo
XXree
Опять же, значение мусора одинаково для всех записей. Я думал, что это выравнивание, но / Zp2, / Zp4, / Zp8 и / Zp16 показывают одинаковое поведение.
Есть мысли?