Lorsque vous tentez d'exporter des classes contenant des objets std::, tels que des vecteurs ou des chaînes, à partir d'une DLL, vous peut rencontrer des avertissements sur la nécessité d'une interface DLL. Cet avertissement est déclenché lorsque le compilateur détecte que les membres de types complexes au sein de la classe ne sont pas explicitement marqués pour l'exportation de DLL.
La déclaration directe des types de membres avec DLL_EXPORT peut résoudre partiellement le problème. Cependant, pour garantir une bonne exportation des fonctions membres, les classes correspondantes dans leur unité de compilation doivent également être marquées comme DLL_EXPORT.
Cette exigence provient du fait que le compilateur ne peut pas déterminer quelles méthodes de la classe sont utilisées par les clients. de la classe DLL_EXPORTed. Par conséquent, il impose que toutes les méthodes accessibles doivent être exportées. Ignorer l'avertissement et le désactiver n'est pas conseillé dans ce contexte.
Pour répondre à l'avertissement pour les membres non exportables en DLL, les approches suivantes peuvent être envisagées :
Dans le exemple fourni, en déclarant la spécialisation de modèle std::allocator
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!