在编译ATL生成的idl(包括windows.h和sql.h)时重新定义
error MIDL2003: redefinition when compiling ATL generated idl with windows.h and sql.h included
作为需求的一部分,我必须在ATL生成的idl中包含sql.h
和windows.h
。不幸的是,当sql.h
包含
1>c:program files (x86)windows kits8.0includeumsqltypes.h(125): error MIDL2003: redefinition : SQLSCHAR
1>c:program files (x86)windows kits8.0includeumsqltypes.h(131): error MIDL2003: redefinition : SQLUINTEGER
当windows.h
加入时,它抱怨
1>C:Program Files (x86)Windows Kits8.0Includeumwinnt.h(347): error MIDL2003: redefinition : INT
1>C:Program Files (x86)Windows Kits8.0Includeumwinnt.h(832): error MIDL2003: redefinition : Int64ShllMod32
1>C:Program Files (x86)Windows Kits8.0Includeumwinnt.h(832): error MIDL2025: syntax error : expecting ; near "{"
注意我正在创建一个基于ODBC的COM包装器,因为我需要将这些文件包含在生成的idl
解决这个问题的一种方法是在包含头文件之前定义RC_INVOKED
。这将跳过与MS IDL文件中的声明冲突的typedef
和#define
。
import "oaidl.idl";
import "ocidl.idl";
#define RC_INVOKED 1
#include "windows.h"
#include "sql.h"
相关文章:
- 在提升multi_index容器中,是否定义了"default index"?
- #定义c-预处理器常量..我做错了什么
- 用C++中的一个变量定义一个常量
- 部分定义/别名模板模板参数
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- #为""定义宏;静态";针对不同的上下文
- 如何确保C++函数在定义之前声明(如override关键字)
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 当类在C++中定义时,有什么方法可以"register"类吗?
- 在命名空间中定义函数还是限定函数
- 此代码是否违反一个定义规则
- 编译C++时未定义的引用
- 不同翻译单元中不可重载的非内联函数定义
- 为什么在定义函数之前先声明它
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 在 Microsoft Access SQL 中调用自定义 DLL 函数时传递的内存地址无效
- 在编译ATL生成的idl(包括windows.h和sql.h)时重新定义
- sql server 2008-如何使用ADO从c++调用用户定义的函数
- 无法使用用户定义的函数执行sql查询
- 如何在c++中执行SQL查询来定义变量