2010-11-10 7 views
0

Nous avons peu de projets qui compilent mon fichier makefile. Cela fait fonctionner le fichier correctement sur Windows 32 et Visual Studio 2005. Pour le portage de Windows 64, nous utilisons Visual Studio 2008. Dans le fichier make, nous avons défini/d "_WIN64" pour définir les 64 bits et autres choses. Dans un fichier, nous incluons l'en-tête windows.h. Mais comme il déclare le pré-processeur WIN32. Donc, après cela, nous obtenons une erreur pour ODBC. Je l'ai testé cela comme suit Première:Problème de portage Windows 64 bits

#ifdef WIN32 
in sds; 
#endif 
include windows.h> 

Ici, nous ne reçoivent pas erreur et sds.

Deuxième:

include windows.h> 

#ifdef WIN32 
in sds; 
#endif 

Ici nous obtenons erreur et sds. Qui montre windows.h déclare WIN32. Le Erro nous obtenons pour SQLBindCol fonction comme suit:

erreur C2664: 'SQLBindCol': ne peut pas convertir le paramètre 6 de 'SQLINTEGER *' à 'SQLLEN *' 1> Types souligné ne sont pas liés; conversion nécessite reinterpret_cast, cast de style C ou fonte de style fonction

Une idée pour s'en débarrasser?

entrée makefile est aussi:

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 

Répondre

1

Le #define Win32 (s) doit exister ainsi comme Win64 un (s) lors de la compilation du code x64. Pensez à Win64 comme un sur-ensemble de Win32 dans ce contexte.