4

要件の一部として、ATL で生成された IDLにsql.handを含める必要がありました。残念ながら、含まれ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 "{"

生成された IDL にこれらのファイルを含める必要があるため、ODBC 経由で COM ラッパーを作成していることに注意してください。

4

1 に答える 1

0

RC_INVOKEDこれを回避する 1 つの方法は、ヘッダー ファイルがインクルードされる前に定義することです。これにより、MS IDL ファイルの宣言と競合するtypedefおよびがスキップされます。#define

import "oaidl.idl";
import "ocidl.idl";

#define RC_INVOKED 1
#include "windows.h"
#include "sql.h"
于 2013-05-22T14:55:51.107 に答える