Je souhaite utiliser une dll COM dans ma bibliothèque C++. La façon dont je me suis dit d'aller à ce sujet, est de #import fichier .tlb du dll, ce que je fis:Comment utiliser dll COM dans mon programme C++
#import "mycom.tlb" no_namespace
Le problème est, je ne sais pas tout à fait où placer cette déclaration. devrait-il être dans le fichier H ou le fichier CPP? ou peut-être le fichier stdafx.h? J'ai essayé de le placer dans le fichier .cpp, juste pour tester.
dans le fichier H je ce membre a déclaré:
ILogicSecuredPtr m_pbLogic;
(où ILogicSecured est l'interface que je veux travailler dans mon dll COM)
Puis j'ajouté ce dans le constructeur pour instancier l'interface:
CoInitialize(NULL);
m_pbLogic(__uuidof(LogicSecured));
(où LogicSecured est le nom de l'objet qui implémente l'interface)
Dans le destructor j'ajouté:
CoUninitialize();
Cela ne compilera pas cependant, peu importe où je tente de placer la déclaration de #import. il ne reconnaît tout simplement pas l'objet ILogicSecured. Je reçois cette erreur dans le fichier H:
Error 2 error C2146: syntax error : missing ';' before identifier 'm_pbLogic'
Je dois mentionner aussi que quand je F12 (dans Visual Studio) sur la déclaration ILogicSecuredPtr, il me faut au fichier TLH très bien. Donc je sais que ça le reconnaît.
Qu'est-ce que je fais mal ici?
Merci beaucoup. Roey
Si j'essaye d'ajouter le #import dans le fichier stdafx.h, le m_pbLogic (__ uuidof (LogicSecured)); le code ne compile pas, en disant erreur 18 erreur C2064: terme n'évalue pas à une fonction prenant 1 arguments – Roey
C'est vrai - vous essayez d'appeler le constructeur de variable membre dans le corps du constructeur - ce n'est pas autorisé. Vous devez utiliser la méthode CreateInstance() de l'IWhateverPtr à la place. – sharptooth
Merci pour la réponse rapide. Pouvez-vous donner un exemple de comment appeler CreateInstance dans ma situation? et où le placer? Merci – Roey