Comment créer une DLL à partir de la ligne de commande dans Windows à l'aide de MSVC
J'ai fait C pendant environ 20 ans, mais je n'ai jamais construit un DLL; j'ai toujours préféré lien statique.
- Je utiliser la ligne de commande - cl.exe, etc - et gnumake makefiles, pour construire mes applications Windows.
Je veux maintenant créer une DLL et je suis confus.
En fin de compte, je vais finir à la fois avec une .lib et un .dll. L' .lib contient stub code au moment de l'exécution des charges de la DLL et utilise le code qui y est.
J'ai été en regardant les lignes de commande pour les lib et lien et il n'est pas évident pour moi exactement ce qui est censé être fait pour produire cette sortie.
J'ai donc quelques questions;
Ne cl besoin d'autres arguments, pour indiquer qu'il est en train de compiler une DLL? (Je sais que la DLL exporté prototypes besoin de __declspec(dllexport)).
Je sais lien de besoins /dll comme un argument.
Je courrai lib et lien, pour produire de l' .lib et .dll respectivement, ou de lien de produire de l'?
Quoi d'autre ai-je besoin de savoir?
- Ce blog est simple, et montre même
ctypes
accès de python: albertech.blogspot.com/2014/12/...
Vous devez vous connecter pour publier un commentaire.
Sur la ligne de commande utilisation:
ou, si vous préférez le plus de commentaires & explicit version:
_USRDLL
et_WINDLL
ne sont pas obligatoirement besoin, il suffit d'utiliser/LD
sans passer/DLL
,/OUT
à l'éditeur de liens par/link
.Simlar à Ebow Halm réponse, mais en utilisant un .fichier def pour lister les fonctions exportées et les nouveaux arguments de ligne de commande:
Références:
S'avère qu'il se passe automatiquement.
Si vous avez exporté des fonctions (par exemple, /d'exportation, de __declspec(dllexport), etc) que l'éditeur de liens de générer automatiquement la .fichier lib (vous n'avez bien sûr besoin d' /dll sur la ligne de commande liens).
Pas depuis Win3x s'en alla, maintenant, vous venez juste besoin d'
__declspec(dllexport)
ou un .DEF fichier qui définit les noms des symboles que vous désirez exporter. un .def d'un fichier permet d'exporter les symboles en cas de modification du nom, de sorte qu'il peut encore être utile pour les cas spéciaux.Yep.
lib est uniquement utilisé pour créer des bibliothèques statiques (ou à ajouter .objs à votre implib)
Lien de produire une .dll et l'importation .lib pour elle.
La façon la plus simple de le savoir est de faire un MSVC projet où vous définissez tout ce que vous voulez, puis activer la génération de journalisation, de faire construire et d'analyser les buildlog pour toutes les commandes et leurs arguments.