Puis-je utiliser la méthode LoadLibrary pour importer une donnée de type struct? excusez-moi pour mon anglais. merci.pour utiliser une bibliothèque dll avec la méthode LoadLibrary() sur C++
Répondre
Hm ... Cette question était un peu difficile à comprendre, j'en ai peur.
En C++, une déclaration struct est juste une déclaration. Il ne génère pas quelque chose que vous pouvez charger lors de l'exécution, c'est une pure construction à la compilation qui indique au compilateur comment quelque chose est mis en mémoire, les champs impliqués, leurs types et leur ordre, etc.
Je suppose que vous utilisez VC 2005.
MS maintenant vous offrir Delay Loading Dll's.
Le lieur Visual C++ prend désormais en charge le chargement différé des DLL. Cette vous soulage de la nécessité d'utiliser les fonctions Windows SDK LoadLibrary et GetProcAddress pour implémenter le chargement retardé DLL. Étapes à suivre pour configurer la charge différée.
Aller projet-> Propriétés-> Linker-> Entrée puis spécifiez votre dll dans « » retard DLL Loaded
Voulez-vous dire pour mettre les données dans une dll et utiliser LoadLibrary et Getprocaddres pour obtenir un pointeur aux données? Cela est possible, bien qu'il soit plus fréquent de placer des fonctions dans une DLL et de les laisser retourner un pointeur sur les données.
Permettez-moi de supposer certaines choses qui sont laissés dans la question:
- Vous avez une bibliothèque dynamique appelée flubber.dll
- La bibliothèque exporte la fonction
bool GetFlubber(Flubber* flubber)
. - La fonction et le type
Flubber
(qui se trouve être unstruct
!) Sont déclarés dans un fichier d'en-tête appelé flubber.h.
Si ces 3 conditions sont remplies, vous pouvez utiliser LoadLibrary
sur flubber.dll, suivi par GetProcAddress
avec GetFlubber
comme nom de proc, et enfin vous pouvez déclarer une instance Flubber
localement et le transmettre à GetFlubber
via le adresse proc récupérée.
Comme d'autres réponses ont suggéré qu'il est difficile de dire ce qui est demandé ici, mais je vais donner une réponse pour une autre interprétation de la question. Je ne suis pas sûr si c'est "officiellement supporté", mais vous pouvez avoir une DLL exporter une variable globale, puis y accéder dynamiquement via GetProcAddress. Par exemple, si une bibliothèque appelée foo.dll contient un global de type FOO nommé g_MyGlobal, alors elle peut exporter la variable dans foo.def. Le code client peut alors appeler:
MyPointer = GetProcAddress(..., "g_MyGlobal");
et d'obtenir un pointeur "FOO *" sur le global.
...mais avec cela dit, si vous avez besoin de faire cela pour autre chose que des tests privés, vous pourriez vouloir repenser votre conception. Il serait probablement beaucoup plus sûr et plus propre de cacher ce global derrière une fonction exportée dans la DLL.
- 1. CreateRemoteThread, LoadLibrary et PostThreadMessage. Quelle est la méthode IPC appropriée?
- 2. Chargement de la DLL C++ managée à partir du programme C++ ordinaire via LoadLibrary
- 3. Utilisation d'une DLL avec l'en-tête .h en C++
- 4. Comment utiliser LoadLibrary dans plusieurs threads COM Accross?
- 5. Quelles sont mes options pour DLL C++ pour appeler une DLL C#?
- 6. Puis-je utiliser une DLL écrite en C avec PHP?
- 7. chemin Windows recherche dans LoadLibrary avec manifeste
- 8. LoadLibrary échoue lors de l'inclusion d'un fichier spécifique pendant la construction de la DLL
- 9. LoadLibrary échoue sous Vista x64
- 10. Dépendances supplémentaires/DLL/Bibliothèque
- 11. Créer une DLL: Comment utiliser une DLL pour créer une nouvelle DLL?
- 12. Visual Studio 2008 IDE - Liaison statique d'une bibliothèque Dll C
- 13. C#: Comment utiliser la méthode Enumerable.Aggregate
- 14. Quand utiliser une méthode d'extension avec lambda sur LINQtoObjects pour filtrer une collection?
- 15. Écriture d'un remplacement pour une DLL C?
- 16. Quelle est la méthode préférée pour charger une DLL sur un plugin Eclipse RCP?
- 17. Comment utiliser C# DLL dans vC++?
- 18. comment utiliser une méthode à l'intérieur d'un com dll en C#?
- 19. Comment utiliser la méthode paramétrée avec NSNotificationCenter?
- 20. Structure de répertoire pour une bibliothèque C++
- 21. Utiliser une API de bibliothèque java .jar en C#?
- 22. Bibliothèque C# pour la conformité (x) html
- 23. DllRegisterServer pour C# dll?
- 24. Problème avec la bibliothèque statique en C++
- 25. Comment utiliser les fonctionnalités de C++ pour utiliser plus propre de la bibliothèque i18n sur l'utilisation directe de gettext() avec C
- 26. C++: quelle bibliothèque regex devrais-je utiliser?
- 27. Bibliothèque JSON pour C#
- 28. Une DLL peut-elle être liée à une autre DLL avec une bibliothèque d'importation si la première DLL est liée au moment de l'exécution?
- 29. TestDriven.NET et la bibliothèque C native
- 30. Comment utiliser la méthode drawString pour écrire en diagonale
S'il veut charger des bibliothèques dynamiquement en fonction du versionnement et de la disponibilité, LoadLibrary doit toujours être utilisé. –
Merci pour cela. Je ne savais pas celui-ci. – mahesh