Синтаксическая ошибка при преобразовании IDL в заголовок C

Я пытаюсь получить файлы заголовков C для интерфейсов COM, используя средство просмотра объектов OLE/COM.

Я пытаюсь сохранить библиотеку типов в виде файла заголовка в средстве просмотра объектов, однако после мигания окна cmd ничего не происходит. Я попытался сохранить его как файл IDL и самостоятельно преобразовать в файл заголовка с помощью этой команды;

midl /out C:\temp /header EXCEL.h EXCEL.IDL

Однако я получаю эту ошибку:

Microsoft (R) 32b/64b MIDL Compiler Version 7.00.0555
Copyright (c) Microsoft Corporation. All rights reserved.
64 bit Processing .\EXCEL.IDL
EXCEL.IDL
64 bit Processing C:\Program Files\Microsoft SDKs\Windows\v7.1\INCLUDE\oaidl.idl

oaidl.idl
64 bit Processing C:\Program Files\Microsoft SDKs\Windows\v7.1\INCLUDE\objidl.id
l
objidl.idl
64 bit Processing C:\Program Files\Microsoft SDKs\Windows\v7.1\INCLUDE\unknwn.id
l
unknwn.idl
64 bit Processing C:\Program Files\Microsoft SDKs\Windows\v7.1\INCLUDE\wtypes.id
l
wtypes.idl
64 bit Processing C:\Program Files\Microsoft SDKs\Windows\v7.1\INCLUDE\basetsd.h

basetsd.h
64 bit Processing C:\Program Files\Microsoft SDKs\Windows\v7.1\INCLUDE\guiddef.h

guiddef.h
.\EXCEL.IDL(17) : warning MIDL2015 : failed to load tlb in importlib: : VBE6EXT.
OLB
.\EXCEL.IDL(19) : warning MIDL2015 : failed to load tlb in importlib: : MSO.DLL
.\EXCEL.IDL(629) : error MIDL2025 : syntax error : expecting a type specificatio
n near "single"
.\EXCEL.IDL(629) : error MIDL2026 : cannot recover from earlier syntax errors; a
borting compilation

VBE6EXT.OLB файл можно найти в C:\Program Files (x86)\Common Files\microsoft shared\VBA\VBA6, MSO.dll файл можно найти в C:\Program Files (x86)\Common Files\microsoft shared\OFFICE12

Есть строки, в которых происходят предупреждения и ошибки:

  1. importlib("VBE6EXT.OLB");
  2. --
  3. importlib("MSO.DLL");

--

  1. HRESULT Item(
  2. [in] int Index,
  3. [out, retval] single* Val);

Я предполагаю, что мне нужно сказать midl, где найти эти два недостающих файла, но я не знаю, как это сделать.

Редактировать:

Я обновил команду компилятора следующим образом:

midl /out C:\temp /header EXCEL.h /I "C:\Program Files (x86)\Common Files\microsoft shared\VBA\VBA6;C:\Program Files (x86)\Common Files\microsoft shared\OFFICE12" EXCEL.IDL

Он исправляет предупреждения о невозможности загрузки, но синтаксическая ошибка все еще сохраняется. midl не распознает single как тип. Я что-то упустил здесь?


person yasar    schedule 11.10.2015    source источник
comment
попробуйте добавить C:\Program Files (x86)\Common Files\microsoft shared\VBA\VBA6 и C:\Program Files (x86)\Common Files\microsoft shared\OFFICE12 в среду path$   -  person milevyo    schedule 11.10.2015