2011-01-28 2 views
5

Я работаю над старым проектом C++ COM, который я перехожу к Visual Studio 2010. В файле IDL для этого проекта мне нужно ссылаться на файл ODL из другого проекта C++. Моя проблема в том, что другой проект генерирует заголовочный файл как $ (filename) _h.h. Когда мой IDL-файл генерирует его заголовочный файл, он генерирует имя файла ODL как $ filename.h и не может ссылаться на правильный файл.Сменить заголовочный файл IDL

Другими словами, в моем IDL файл ("MyIDLFile.idl") У меня есть заявление, как

импорт "MyODLFile.odl"

, которые сохранены в файле ("MyIDLFile.h") становится

включают "MyODLFile.h"

, когда мне это нужно для создания

включают "MyODLFile_h.h"

Как указать имя файла, который я хочу создать IDL в инструкции импорта?

ответ

2

Я не уверен, что вы имеете в виду в отношении оператора импорта, но то, что вы ищете, можно найти в свойствах проекта. Перейдите в окно свойств (Alt-F7) и в разделе «Свойства конфигурации/MIDL/Output» у вас будет возможность объявить файл заголовка, который вы хотите создать. Поскольку ваш проект устарел, может быть проще просто удалить «_h» из имени файла заголовка (например, $ (имя_проекта) .h вместо $ (ProjectName) _h.h). См. http://support.microsoft.com/kb/321274 для получения дополнительной информации.

+2

Это оператор импорта, на который ссылается OP: http://msdn.microsoft.com/en-us/library/ windows/desktop/aa367047.aspx Что произойдет, если вы используете это, то заголовок, созданный в MIDL для зависимого IDL, будет содержать include для другого заголовка. Он, похоже, использует то же имя, что и O DL-файл с суффиксом «.h». Я не понимаю, почему это происходит, когда Visual Studio по умолчанию использует «% (имя файла) _h.h» для имени файла заголовка MIDL. Поэтому, используя значения по умолчанию, вы никогда не сможете импортировать файлы IDL/ODL в другой. – Steiny

0

Это, кажется, общая проблема, я не смог найти хорошее решение, но один обходной путь, чтобы присоединять «_I» для ваших IDL файлов, например, EquipmentConstants_i.idl

Microsoft делает ссылаться на/header компилятором, но я не смог получить это для работы (midl /header switch).

Смежные вопросы