我一直在与被称为com interop的野兽进行长时间的接触…
我目前正在尝试从由OLE/COM对象查看器生成的.idl文件生成.tlb。但是,当尝试运行mil.exe编译它时,我得到一个错误:
.\Sim.API.IDL(236) : error MIDL2025 : syntax error : expecting a type s
pecification near "ImportFileStatus"
我的.idl文件长度超过1000行,因此我不想在这里发布它,但是我认为感兴趣的部分是:
typedef [uuid(980B172E-19C1-389A-BB74-29A54737C5B4), version(1.0) ,
custom(0F21F359-AB84-41E8-9A78-36D110E6D2F9, "Sim.API.ImportFileResult")
]
struct tagImportFileResult {
ImportFileStatus _status;
LPSTR _message;
} ImportFileResult;
几行之后…
typedef [uuid(A4B9A0FF-A2D4-3EC5-AB7E-69311B9122C8), version(1.0) ,
custom(0F21F359-AB84-41E8-9A78-36D110E6D2F9, "Sim.API.ImportFileStatus")
]
enum {
ImportFileStatus_Success = 0,
ImportFileStatus_VersionMismatch = 1,
ImportFileStatus_Failure = 2
} ImportFileStatus;
我有一种感觉,为了修正类型规范错误,应该尊重它们。但是,如果我这样做,我会遇到一个新问题。
midl\oleaut32.dll : warning MIDL2368 : error generating type library, ignored :
Could not set UUID : tagImportFileResult (0x800288C6)
我对IDL格式和mil.exe的使用非常不熟悉,也许我所做的工作有明显的错误?
一如既往,我们将非常感谢您的帮助:)