Я хочу использовать COM-библиотеку COM в своей библиотеке C++. Как я фигурный идти об этом, чтобы #import .tlb файл в библиотеки DLL, который я сделал:Как использовать COM-dll в моей программе на C++
#import "mycom.tlb" no_namespace
Проблема заключается в том, я даже не знаю, куда поместить эту декларацию. если он находится внутри файла H или файла CPP? или, может быть, файл stdafx.h? Я попытался поместить его в файл .cpp, просто для тестирования.
в H файл я объявил этот член:
ILogicSecuredPtr m_pbLogic;
(где ILogicSecured является интерфейсом я хочу работать в моей DLL COM)
Затем я добавил это в конструктор для создания экземпляра интерфейс:
CoInitialize(NULL);
m_pbLogic(__uuidof(LogicSecured));
(где LogicSecured это имя объекта, который реализует интерфейс)
В деструкторе я добавил:
CoUninitialize();
Это не будет компилироваться, однако, независимо от того, где я пытаюсь поместить объявление #import. он просто не распознает объект ILogicSecured. Я получаю эту ошибку в файле H:
Error 2 error C2146: syntax error : missing ';' before identifier 'm_pbLogic'
Я должен также упомянуть, что, когда я f12 (в Visual Studio) об объявлении ILogicSecuredPtr, он принимает меня в файл TLH просто отлично. Поэтому я знаю, что это признает.
Что я здесь делаю неправильно?
Спасибо большое. Roey
Могу ли я сгустить участок немного? Если я попытаюсь добавить #import в файл stdafx.h, то m_pbLogic (__ uuidof (LogicSecured)); Код не компилируется, говоря Ошибка 18 ошибка C2064: термин не оценивает функцию, принимающую 1 аргумент – Roey
Правильно - вы пытаетесь вызвать конструктор переменных-члена внутри тела конструктора - это недопустимо. Вместо этого вы должны использовать метод CreateInstance() для IWhateverPtr. – sharptooth
Спасибо за быстрый ответ. Можете ли вы дать примерный пример того, как вызвать CreateInstance в моей ситуации? и где его разместить? – Roey