У меня была продолжительная встреча со зверем, известным как COM Interop ...
В настоящее время я пытаюсь создать .tlb из файла .idl, созданного программой просмотра объектов OLE / COM. Однако при попытке запустить Midl.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 и с использованием midl.exe, возможно, что-то явно не так с тем, что я делаю?
Как всегда, любая помощь будет принята с благодарностью :)