Question

Nous avons quelques projets qui compilent mon makefile. Ces fichiers de faire fonctionner correctement sur Windows 32 et Visual Studio 2005. Pour le portage Windows 64, nous utilisons Visual Studio 2008. Dans Makefile, nous avons défini / d « _WIN64 » pour régler le 64 bits comprend et autres chose. Dans un dossier, nous joignons l'en-tête de windows.h. Mais comme déclarant le processeur pré WIN32. Ainsi, après que nous obtenons erreur pour ODBC. Je l'ai testé cela comme suit Tout d'abord:

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

Ici, nous ne recevons pas d'erreur dans et sds.

Deuxième:

include windows.h>

#ifdef WIN32
in sds;
#endif

Ici, nous obtenons erreur et sds. Ce qui montre windows.h est WIN32 déclarant. Le Erro nous obtenons pour la fonction SQLBindCol 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, fonte C-style ou fonte de style fonction

Toute idée de se débarrasser de lui?

entrée makefile est comme:

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 
Était-ce utile?

La solution

Le #define Win32 (s) doit exister et comme un Win64 (s) lors de la compilation du code x64.

Pensez à Win64 comme une surcouche de Win32 dans ce contexte.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top