ATL "Мастер реализации интерфейса" - PullRequest
1 голос
/ 10 июня 2010

Я создал ATL COM-сервер в VC ++ 2005. Я хочу реализовать некоторый интерфейс, определенный в некоторой библиотеке (* .olb). Я знаю, что увижу интерфейс, если #import этот olb (в .tlh.tli). Но я не могу создать реализацию заглушки для интерфейса с помощью «Мастер интерфейса реализации», поскольку этот интерфейс отсутствует в списке «Интерфейсы» (как для параметров «Реестр», так и для «Файл»). Почему возможна такая ситуация? И как мне автоматически генерировать реализацию заглушки. Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 10 июня 2010

Вы можете отредактировать файл .idl и использовать

[
    ...
]
library Something
{
    importlib("somelibrary.olb"); 
    ... 
}

Это неудобно, однако оператор importlib должен появляться внутри блока library .Это необходимо, потому что библиотека типов, вероятно, содержит определения кокласса.

Что вы действительно хотите, так это использовать оператор импорта для импорта IDL, который создал библиотеку типов.Минус кокосовые.Если у вас нет IDL, вы можете заново создать его с помощью OleView.exe, File + View Typelib.Скопируйте и вставьте нужные определения интерфейса в свой собственный файл .idl, а затем используйте оператор импорта MIDL в своей IDL.

0 голосов
/ 08 апреля 2011

Я нашел ошибку в проекте. Это был бардак с библиотеками.

...