gpt4 book ai didi

c++ - 包含错误 MIDL2003 : redefinition when compiling ATL generated idl with windows. h 和 sql.h

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:23:37 24 4
gpt4 key购买 nike

作为要求的一部分,我必须在 ATL 生成的 idl 中包含 sql.hwindows.h。不幸的是,当包含 sql.h

时,它一直在提示
1>c:\program files (x86)\windows kits\8.0\include\um\sqltypes.h(125): error MIDL2003: redefinition : SQLSCHAR
1>c:\program files (x86)\windows kits\8.0\include\um\sqltypes.h(131): error MIDL2003: redefinition : SQLUINTEGER

当包含 windows.h 时,它会提示

1>C:\Program Files (x86)\Windows Kits\8.0\Include\um\winnt.h(347): error MIDL2003: redefinition : INT
1>C:\Program Files (x86)\Windows Kits\8.0\Include\um\winnt.h(832): error MIDL2003: redefinition : Int64ShllMod32
1>C:\Program Files (x86)\Windows Kits\8.0\Include\um\winnt.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"

关于c++ - 包含错误 MIDL2003 : redefinition when compiling ATL generated idl with windows. h 和 sql.h,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16688017/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com