Probablement une question simple mais je n'ai que Linux pour tester ce code là où __declspec (dllexport) n'est pas nécessaire. Dans le code actuel __declspec (dllexport) est en face de tous les fichiers dans le fichier .h, mais juste en face de 50% des fonctions du fichier cpp, je me demande si elles sont vraiment nécessaires dans le fichier cpp du tout?Est-ce que __declspec (dllexport) est nécessaire dans les fichiers cpp?
Répondre
Non, c'est seulement nécessaire dans l'en-tête. Il s'agit d'un link avec plus d'informations.
L'expansion de ce que Vinay a dit, je l'ai souvent vu une macro définie
#if defined(MODULENAME_IMPORT)
#define EXPORTED __declspec(dllimport)
#elif defined(MODULENAME_EXPORT)
#define EXPORTED __declspec(dllexport)
#endif
Ensuite, dans votre tête vous
définir les définit en conséquence les paramètres du projet pour le projet faire l'importation/exportation.
Non, ce n'est pas obligatoire dans le fichier cpp. Seulement en déclaration, c'est obligatoire.
Par exemple si j'ai une classe CMyClass. Si je veux exporter ce alors .h aura
.h Code Serveur
__declspec (dllexport) CMyClass { };
Dans le code client à savoir, qui utilise cette classe, vous devez transmettre déclarer la classe comme
code client
__declspec (dllimport) CMyClass;
code // utiliser la classe
Vous pouvez utiliser dans le fichier .cpp également lorsque vous avez le code et vous templated instanciation dans le fichier .cpp alors vous devez exporter la définition lorsqu'il est instancié. Mais même dans ce cas, j'ai vu que faire en .h fonctionne aussi. Sur Windows, vous pouvez utiliser dumpbin.exe/exports * .dll pour voir quelles sont les signatures exportées, il y a aussi un utilitaire similaire sous Linux. Cela vous donnera une idée de la façon dont la signature est exportée.
- 1. __declspec (dllimport/dllexport) et l'héritage
- 2. dépendance étrange comportement dans VS.NET 2005 (non nécessaire .CPP Compilation)
- 3. Tous les fichiers .cpp dépendent de deux fichiers .h?
- 4. Est-ce que c'est nécessaire?
- 5. ASP.NET MVC Html Helpers - Est-ce que Response.Write est nécessaire?
- 6. Est-ce que validates_presence_of est nécessaire si vous utilisez validates_length_of?
- 7. Quelles sont les conventions pour les en-têtes et les fichiers cpp en C++?
- 8. Impossible d'enregistrer le fichier avec le format .cpp insted de format .cpp.9.0 dans VCExpress
- 9. Vérifier l'intégrité des fichiers JAR nécessaire?
- 10. Haxe - Génération d'Exe (cpp)
- 11. Que se passe-t-il si plus d'un fichier .cpp est #include?
- 12. Html.BeginForm() est-il nécessaire?
- 13. Quoi de plus est nécessaire pour Ajax que cette fonction
- 14. KillTimer est-il nécessaire?
- 15. Comment Visual Studio sait-il quels fichiers cpp sont à reconstruire lorsqu'un fichier include est modifié?
- 16. compiler rapidement le fichier cpp
- 17. Est-ce que le "id" dans une balise d'entrée est nécessaire?
- 18. Conversion CPP en Java
- 19. Dans quelles conditions obtiendrez-vous le symbole externe non résolu pour __declspec (dllimport)?
- 20. Problème itérateur cpp
- 21. Génération d'un fichier .cpp
- 22. C++: Inclut la compilation des fichiers d'en-tête échoue mais inclut les compilations des fichiers cpp sources
- 23. Est-ce que l'échec/le succès/l'échec de la portée de D est nécessaire?
- 24. Dans CodeIgniter, est-il possible d'utiliser `$ this-> load-> model()` aussi souvent que nécessaire?
- 25. WinForms: Que deviennent les valeurs stockées dans les fichiers .resx?
- 26. Est-ce que quelque chose est nécessaire pour obtenir un rappel Quartz en plus de l'enregistrer?
- 27. ASP.net, le panneau Accordian est-il nécessaire?
- 28. Est-il nécessaire que les classes d'entités LINQ to SQL implémentent INotifyPropertyChanging dans un projet ASP.NET MVC?
- 29. Quand le "soi" est-il nécessaire?
- 30. Services Web Java - L'axe est-il nécessaire?