У нас есть несколько проектов, которые компилируют мой make-файл. Благодаря этому файл работает нормально в Windows 32 и Visual Studio 2005.
Для портирования Windows 64 мы используем Visual Studio 2008. В файле make мы определили / d «_WIN64» для установки 64-битных включений и другое. В одном файле мы включаем заголовок windows.h. Но так как его декларирует предварительный процессор WIN32. Поэтому после этого мы получаем ошибку для ODBC. Я проверил это следующим образом
Во-первых:
#ifdef WIN32
in sds;
#endif
include windows.h>
Здесь мы не получаем ошибку для in и sds.
Второе:
include windows.h>
#ifdef WIN32
in sds;
#endif
Здесь мы получаем ошибку для in и sds. Что показывает, что windows.h объявляет WIN32.
Ошибка, которую мы получаем для функции SQLBindCol, выглядит следующим образом:
ошибка C2664: «SQLBindCol»: невозможно преобразовать параметр 6 из «SQLINTEGER *» в «SQLLEN *»
1> Типы, на которые указывают, не связаны; преобразование требует reinterpret_cast, приведение в стиле C или приведение в стиле функции
Есть идеи, чтобы избавиться от этого?
Запись make-файла выглядит так:
CPP_PROJ=/nologo /MT /W3 /GR /EHsc /O2 /I "..\..\include" /I"$(VC_ROOT)\include" /I"$(WINSDKDIR)" /D "_WIN64" /D "NDEBUG" /D_CRT_SECURE_NO_WARNINGS /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c