J'utilise la bibliothèque partagée avec une liaison explicite (chargement de la librairie partagée avec dlopen
) afin de mettre en œuvre le modèle de plugin en C++. Est-il possible de définir un pointeur de fonction à un constructeur d'une classe définie dans la bibliothèque partagée ou je devrais définir une méthode factory, dans lib libérée, qui instancierait (et initialiserait) l'objet d'une classe à partir d'une librairie partagée ? Bien sûr, dans mon application principale, je définirais un pointeur de fonction vers une méthode usine, et cette méthode retournerait une instance de la classe dont j'ai besoin.Est-il possible de définir un pointeur de fonction sur un constructeur?
Vive
Sous Windows, vous pouvez utiliser __declspec (dllexport/dllimport) pour exporter et importer des constructeurs (et en fait des classes entières). Serait intéressant de vérifier la documentation du compilateur pour votre compilateur pour voir si elle offre quelque chose de similaire. – Puppy
Sur Linux, tout est exporté par défaut et vous pouvez simplement créer un lien vers tout ce que vous voulez. Mais il utilise une liaison explicite (pensez à LoadLibrary/GetProcAddress dans WinAPI) et honnêtement, je n'ai aucune idée de la façon de gérer les constructeurs dans de tels cas. C'est une bonne question. –