簡體   English   中英

錯誤MIDL2003:在使用windows.h和sql.h編譯ATL生成的idl時重新定義

[英]error MIDL2003: redefinition when compiling ATL generated idl with windows.h and sql.h included

作為要求的一部分,我必須在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"

暫無
暫無

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM