Проблема 64-битного переноса в Windows - PullRequest
0 голосов
/ 10 ноября 2010

У нас есть несколько проектов, которые компилируют мой 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 

1 Ответ

1 голос
/ 14 ноября 2010

Win32 #define (s) должны существовать , а также как Win64 (s) при компиляции кода x64.

В этом контексте Win64 рассматривается как расширенный набор Win32.

...