我試圖從PSDK生成的IDL文件之一生成類型庫,但midl
會話成功完成(ERRORLEVEL
0)沒有生成.tlb文件。目前我不知道什麼是錯的。請指教。_從PSDK IDL文件生成PASCAL綁定文件的問題
下面是一個冗長的輸出形式midl
會議:
>midl emptyvc.idl /tlb .\emptyvc.tlb /I "\Program Files\Microsoft SDKs\Windows\v7.0\Include" /W4
Microsoft (R) 32b/64b MIDL Compiler Version 7.00.0555
Copyright (c) Microsoft Corporation. All rights reserved.
Processing \Program Files\Microsoft SDKs\Windows\v7.0\Include\emptyvc.idl
emptyvc.idl
Processing \Program Files\Microsoft SDKs\Windows\v7.0\Include\objidl.idl
objidl.idl
Processing \Program Files\Microsoft SDKs\Windows\v7.0\Include\unknwn.idl
unknwn.idl
Processing \Program Files\Microsoft SDKs\Windows\v7.0\Include\wtypes.idl
wtypes.idl
Processing \Program Files\Microsoft SDKs\Windows\v7.0\Include\basetsd.h
basetsd.h
Processing \Program Files\Microsoft SDKs\Windows\v7.0\Include\guiddef.h
guiddef.h
\Program Files\Microsoft SDKs\Windows\v7.0\Include\wtypes.idl(671) : warning MIDL2111 : identifier length exceeds 31 characters : STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE
\Program Files\Microsoft SDKs\Windows\v7.0\Include\objidl.idl(2308) : warning MIDL2111 : identifier length exceeds 31 characters : FMTID_MediaFileSummaryInformation
\Program Files\Microsoft SDKs\Windows\v7.0\Include\objidl.idl(2499) : warning MIDL2111 : identifier length exceeds 31 characters : tagEOLE_AUTHENTICATION_CAPABILITIES
\Program Files\Microsoft SDKs\Windows\v7.0\Include\objidl.idl(2518) : warning MIDL2111 : identifier length exceeds 31 characters : EOLE_AUTHENTICATION_CAPABILITIES
\Program Files\Microsoft SDKs\Windows\v7.0\Include\objidl.idl(2616) : warning MIDL2111 : identifier length exceeds 31 characters : tagRPCOPT_SERVER_LOCALITY_VALUES
\Program Files\Microsoft SDKs\Windows\v7.0\Include\objidl.idl(2652) : warning MIDL2111 : identifier length exceeds 31 characters : COMGLB_EXCEPTION_DONOT_HANDLE_FATAL
\Program Files\Microsoft SDKs\Windows\v7.0\Include\objidl.idl(2653) : warning MIDL2111 : identifier length exceeds 31 characters : COMGLB_EXCEPTION_DONOT_HANDLE_FATAL
\Program Files\Microsoft SDKs\Windows\v7.0\Include\objidl.idl(2654) : warning MIDL2111 : identifier length exceeds 31 characters : COMGLB_EXCEPTION_DONOT_HANDLE_ANY
\Program Files\Microsoft SDKs\Windows\v7.0\Include\objidl.idl(2660) : warning MIDL2111 : identifier length exceeds 31 characters : COMGLB_RPC_THREADPOOL_SETTING_DEFAULT_POOL
\Program Files\Microsoft SDKs\Windows\v7.0\Include\objidl.idl(2661) : warning MIDL2111 : identifier length exceeds 31 characters : COMGLB_RPC_THREADPOOL_SETTING_PRIVATE_POOL
\Program Files\Microsoft SDKs\Windows\v7.0\Include\objidl.idl(3359) : warning MIDL2111 : identifier length exceeds 31 characters : APTTYPEQUALIFIER_NA_ON_IMPLICIT_MTA
Processing \Program Files\Microsoft SDKs\Windows\v7.0\Include\oleidl.idl
oleidl.idl
\Program Files\Microsoft SDKs\Windows\v7.0\Include\oleidl.idl(329) : warning MIDL2111 : identifier length exceeds 31 characters : OLEMISC_RENDERINGISDEVICEINDEPENDENT
\Program Files\Microsoft SDKs\Windows\v7.0\Include\oleidl.idl(339) : warning MIDL2111 : identifier length exceeds 31 characters : OLEMISC_IGNOREACTIVATEWHENVISIBLE
Processing \Program Files\Microsoft SDKs\Windows\v7.0\Include\oaidl.idl
oaidl.idl
Processing \Program Files\Microsoft SDKs\Windows\v7.0\Include\oaidl.acf
oaidl.acf
\Program Files\Microsoft SDKs\Windows\v7.0\Include\emptyvc.idl(108) : warning MIDL2392 : [local] procedure without [call_as] : [ Procedure 'Initialize' ]
\Program Files\Microsoft SDKs\Windows\v7.0\Include\emptyvc.idl(157) : warning MIDL2392 : [local] procedure without [call_as] : [ Procedure 'InitializeEx' ]
** ERRORLEVEL is 0 at this point **
零件和工具使用:
- 未修改
emptyvc.idl
從Windows SDK 7.0版 MIDL
版本7.00.0555CL
版本14.00.50727.42
注意:我相信這不是環境問題,因爲我嘗試的第一件事是編譯其他.idl文件,並且如預期的那樣得到了.tbl結果,然後在沒有任何問題的情況下處理了TLIBIMP
。
這裏是CL輸出(跑由MIDL完全沉默):
dlldata.c
dlldata.c(24) : error C2061: syntax error : identifier 'PROXYFILE_LIST_START'
dlldata.c(24) : error C2059: syntax error : ';'
dlldata.c(31) : error C2146: syntax error : missing ';' before identifier 'DLLDATA_ROUTINES'
dlldata.c(38) : fatal error C1004: unexpected end-of-file found
問題的「Delphi」或「Pascal」部分在哪裏? AFAICT,這完全是一個'MIDL'問題。除了標籤中沒有提及'Delphi',除了標題外沒有提及'Pascal'。 –