Chciałbym użyć biblioteki COM dll w mojej bibliotece C++. Sposób Pomyślałem o nim dzieje, jest #import .tlb plik DLL, który robiłam:Jak używać COM dll w moim programie C++
#import "mycom.tlb" no_namespace
Problem polega na tym, że nie bardzo wiem gdzie umieścić tę deklarację. czy powinien być w pliku H lub pliku CPP? a może plik stdafx.h? Próbowałem umieścić go w pliku .cpp, tylko do testowania.
w pliku H I to członek stwierdził:
ILogicSecuredPtr m_pbLogic;
(gdzie ILogicSecured jest interfejs chcę pracować z moim dll COM)
Potem dodałem to w konstruktorze instancji Interfejs:
CoInitialize(NULL);
m_pbLogic(__uuidof(LogicSecured));
(gdzie LogicSecured to nazwa obiektu, który realizuje interface)
W destructor I dodaje:
CoUninitialize();
To nie będzie kompilować jednak, bez względu na to, gdzie staram się umieścić deklarację #import. po prostu nie rozpoznaje obiektu ILogicSecured. otrzymuję ten błąd w pliku H:
Error 2 error C2146: syntax error : missing ';' before identifier 'm_pbLogic'
Należy również wspomnieć, że kiedy F12 (w Visual Studio) w deklaracji ILogicSecuredPtr, zabiera mnie do pliku tlh dobrze. Wiem, że to rozpoznaje.
Co ja tu robię źle?
Wielkie dzięki. Roey
Czy mogę nieco zagęścić wątek? Jeśli spróbuję dodać #import do pliku stdafx.h, m_pbLogic (__ uuidof (LogicSecured)); Kawałek kodu nie kompiluje się, mówiąc: Błąd 18 błąd C2064: termin nie jest wartościowany do funkcji przyjmującej 1 argumenty – Roey
Zgadza się - próbujesz wywołać konstruktor zmiennej członkowskiej w ciele konstruktora - jest to niedozwolone. Zamiast tego należy użyć metody CreateInstance() z IWhateverPtr. – sharptooth
Dzięki za szybką odpowiedź. Czy możesz podać przykład fałszywego połączenia funkcji CreateInstance w mojej sytuacji? i gdzie go umieścić? Dzięki – Roey