7
votes

Lier beaucoup de .libs pour créer une DLL: Symbole externe non résolu _dllmaincrtstartup

Je pratique la tâche (terrifiante) de la construction de LLVM 3.3 sur Windows et je suis arrivé à la scène où j'ai une charge de fichiers llvm * .lib code>. Je veux les relier ensemble à une énorme dll partagée, mais je me lance (c'est ma première fois que des trucs sur Windows). J'ai essayé: xxx pré>

mais en vain. IT Erreurs avec: P>

link /DLL /OUT:LLVM3.3.dll LLVM*.lib EmptyDllMain.obj


1 commentaires

La raison pour laquelle la DLL est minuscule est que les fichiers LIB ne sont liés que si elles sont nécessaires pour satisfaire les références. Vous n'en avez pas - alors rien n'est lié. Les options sont 1. Écrivez un fichier def pour créer des références; 2. Utilisez -Wholarchive:


3 Réponses :


3
votes

J'avais cela une fois en reliant une lib avec une plate-forme erronée ensemble (x86 à x64). Assurez-vous que tous les LLVM * .Lib sont en construction et liés à la liste d'outils correcte: xxx

que vous obtenez en appelant xxx

aussi je eu des problèmes similaires lors du mélange de MT et de MD Crts, je vous recommande de vous en tenir à xxx

lors de la compilation des objets de l'un des objets LLVM * .lib (et de tout autre objet d'autres éléments externes bibliothèques que vous connaissez dans ces).

[EDIT]

et lancez cette laidly videdllmain.obj!

[/ P>


2 commentaires

J'ai eu le même problème et ça me rendait fou. Dans mon cas "C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ Bin \ VCvars32.bat" AMD64_X86 était le truc pour réinitialiser la boîte à outils.


"Et lancez cette Ugly EmptydllMain.Obj" alors comment résoudre l'erreur de liaison alors à la place?



2
votes

Si vous êtes entré manuellement sur le _dllmaincrtstartup , assurez-vous de l'épeler correctement. J'avais _dllmaincrtstartup et a pris un certain temps pour attraper pourquoi j'ai toujours reçu l'erreur de liaison. Pour Windows CE, le lien requis LIB est corelibc.lib .


1 commentaires

Excellente réponse, mais quelle est la bibliothèque pour Visual C ++ 6.0 et ci-dessous (Corelibc a un autre nom) ?



0
votes

Supprimer les fichiers lib de "Ignorer les bibliothèques par défaut spécifiques" de "Linker-> Entrée" sur les propriétés du projet


0 commentaires