0

我正在尝试编译一个 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?

任何帮助都会很棒

谢谢

4

2 回答 2

1

原来问题是不知何故 BaseTsd.h 不包括在内(不敢相信这是可能的)

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

于 2010-07-08T15:21:32.043 回答
0

采用

#include <windows.h>

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

于 2017-07-04T13:00:29.017 回答