[英]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 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"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.