我们有很少的项目正在编译我的makefile。这些使文件在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 GT;指向的类型是无关的;转换需要reinterpret_cast,C风格的转换或函数式转换
有什么想摆脱它吗?
makefile条目如下:
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
答案 0 :(得分:1)
在编译x64代码时,Win32 #define应该与Win64一样存在以及。
在这种情况下,将Win64视为Win32的超集。