__declspec(dllimport) comment charger de la bibliothèque
http://msdn.microsoft.com/en-us/library/9h658af8.aspx
MSDN dit que je peux la fonction d'exportation à partir de la bibliothèque avec __declspec(dllexport)
mais comment puis-je charger cette bibliothèque dans mon exécutable?
J'ai une fonction exportée dans la DLL:
__declspec(dllexport) void myfunc(){}
Et maintenant, je voudrais l'utiliser dans mon exécutable:
__declspec(dllimport) void myfunc(void);
Mais comment mon programme va savoir où trouver cette fonction?
Regardez: stackoverflow.com/questions/538134/...
Il n'est pas à votre programme. C'est le système d'exploitation pour trouver la DLL que vous avez besoin. Vous pouvez lui donner un moment très dur à faire, mais il ya juste pas de point de le faire. Assurez-vous que la DLL est présent dans le même répertoire que votre fichier EXE et il fonctionnera à merveille.
Il n'est pas à votre programme. C'est le système d'exploitation pour trouver la DLL que vous avez besoin. Vous pouvez lui donner un moment très dur à faire, mais il ya juste pas de point de le faire. Assurez-vous que la DLL est présent dans le même répertoire que votre fichier EXE et il fonctionnera à merveille.
OriginalL'auteur deepspace | 2013-07-29
Vous devez vous connecter pour publier un commentaire.
C'est le compilateur/linker travail, c'est fait automatiquement aussi longtemps que vous
L' .lib fichier est généré lors de la compilation de la DLL, ou est livrée avec elle si ce n'est pas votre code. Dans ce cas, le code est compilé avec
__declspec(dllexport)
.Lors de la compilation de votre fichier exe, le compilateur voit que le inclus la fonction se trouve dans la DLL. Dans ce cas, le code est compilé avec
__declspec(dllimpport)
.L'éditeur de liens est fourni avec le .fichier lib, et génère des instructions appropriées dans le fichier exe.
Ces instructions de rendre le fichier Exe trouver la DLL de charge et de la fonction exportée au moment de l'exécution. La DLL a juste à côté de l'Exe (il y a d'autres endroits, cependant).
De la commutation entre les
__declspec(dllimpport)
et__declspec(dllexport)
est fait par une macro, fournis par Visual C++ lors de la création d'un projet DLL.voir mon montage, il doit juste être à côté de l'Exe
OriginalL'auteur CharlesB
Si vous utilisez une DLL, vous pouvez utiliser le
LoadLibrary
etGetProcAddress
combinaison.Oui, est-il alternative à
__declspec(dllimport)
?OriginalL'auteur Kirk Backus
Votre système d'exploitation sera en mesure de le trouver, basé sur le processus de liaison. Si votre bibliothèque est liée à votre programme, il devra reconnaître qu'il existe une fonction externe utilisé, et chercher dans la dll chemins. Si elle ne peut pas le trouver, votre linker lèvera une erreur.
Je recommande de faire un peu de lecture dans le processus de liaison; il peut être déroutant à la fois, mais de comprendre qu'il peut vous aider à comprendre quelques-uns des concepts clés en C/C++.
OriginalL'auteur Forest Kunecke