0

我们有几个项目正在编译我的 makefile。这些 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-style cast 或 function-style cast

有什么办法摆脱它吗?

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 
4

1 回答 1

1

在编译 x64 代码时,应该存在 Win32 #define(s)以及Win64 one(s)。

在这种情况下,将 Win64 视为 Win32 的超集。

于 2010-11-14T00:03:24.470 回答