Quel est l'équivalent de la langue D2 de __declspec (dllexport) p>
J'ai le dll dll linkage exemple de code up and running. Les fonctions exportatrices, à la fois dans l'espace de noms manqué de DMD ainsi que dans l'espace de nom «C» standard U-manglé, fonctionne comme un charme. Mais je rencontre des eaux inexplortées concernant le partage d'une variable d'int (global) Int entre DLL ainsi que le programme EXE principal ... J'ai vérifié la table des symboles DLL avec dépend222_x86 et pendant que je faisais un point d'utilisation de l'exportation. Directive juste avant la déclaration de Var, elle ne s'affiche pas dans la table de la DLL, tandis que les fonctions font. Peut-on exporter des variables pour être visibles dans une DLL avec la chaîne d'outil DMD DMD DMD? P>
3 Réponses :
En tant que solution de contournement, si l'exportation ou l'importation de variables globales ne fonctionne pas, écrivez une fonction d'emballage du formulaire si vous souhaitez exporter de D à c. P > p>
Peut-être que vous pouvez faire ce que Ralph Tandetzky dit mais dans un module statique CTOR. Vous n'aurez pas à appeler explicitement aucune fonction, tous les symboles seront chargés. Peut-être que __Gshared serait aussi apprécié. P>
C'était un bogue dans le compilateur ( BugZilla 10059 ). Le code suivant devrait fonctionner maintenant.
export __gshared int foo;
Jamais essayé, mais assurez-vous d'utiliser __Gshared.
De nombreuses autres langues / compilateurs ne prennent pas en charge les variables d'exportation. Les variables exportatrices sont une chose fragile de toute façon, car elle échoue dans de nombreux scénarios (liaison de retard) où les fonctions fonctionnent sans problème. Pourquoi ne pouvez-vous pas écrire une fonction getter / setter pour votre variable à la place?