尝试使用x64位目标平台在VS2008中编译时MDAC问题

时间:2010-06-03 19:32:35

标签: sql visual-studio-2008 64-bit 32bit-64bit mdac

我正在尝试编译32位应用程序。我知道它的问题,但这就是它在64位版本上编译的原因。

我正在解决这个问题。 应用程序使用了大量的sql东西。

在sqltypes.h文件中:(由MDAC提供)

#ifdef _WIN64
typedef INT64           SQLLEN;
typedef UINT64        SQLULEN;
typedef UINT64  SQLSETPOSIROW;
#else
  #define SQLLEN          SQLINTEGER
  #define SQLULEN         SQLUINTEGER
  #define SQLSETPOSIROW   SQLUSMALLINT
#endif
//For Backward compatibility
#ifdef WIN32
  typedef SQLULEN           SQLROWCOUNT;
  typedef SQLULEN           SQLROWSETSIZE;
  typedef SQLULEN           SQLTRANSID;
  typedef SQLLEN            SQLROWOFFSET;
#endif

出于某种原因,当它在32位平台上编译时,它工作得很好 但是当我尝试在64上构建它时,它会变得狂暴。

错误61错误C2146:语法错误:缺少';'在标识符'SQLLEN'之前.. \ external \ microsoft sdk \ include \ sqltypes.h 50

它无法识别INT64,UINT64。

我需要启用哪些内容才能在64位构建过程中运行吗? 缺少一些#include或#define?

任何帮助都会很棒

由于

2 个答案:

答案 0 :(得分:1)

原来问题是,不包括BaseTsd.h(不能相信这是可能的)

但作为简短的修复我只是手动包含了BaseTsd.h ...如果我找到更好的解决方案,我会评论这个答案

答案 1 :(得分:0)

使用

#include <windows.h>

它包含BaseTsd.h和其他相关的Windows特定定义。