2009-11-18 5 views
0

J'ai téléchargé une bibliothèque pour écrire un programme qui peut décompresser un fichier RAR. (http://www.rarlab.com/rar/UnRARDLL.exe) Cela me fournit avec unrar.dll, unrar.h, unrar.lib et UnRDLL.def. J'ai copié le code d'exemple C et j'ai essayé de le compiler avec Dev-Cpp et Eclipse.Options de l'éditeur de liens C++ pour DLL (DEF, LIB, etc.)

Je n'ai pas beaucoup d'expérience en utilisant des DLL, donc je ne sais pas comment traiter les erreurs de l'éditeur de liens suivants:

UnRDLL.o (.text + 0x151): UnRDLL.c: Non défini référence à [email protected]' UnRDLL.o(.text+0x1c0):UnRDLL.c: undefined reference to RARSetCallback @ 12' UnRDLL.o (.text + 0x1e2): UnRDLL.c: undefined reference to [email protected]' UnRDLL.o(.text+0x2b9):UnRDLL.c: undefined reference to RARProcessFile @ 16' UnRDLL.o (.text + 0x2fe): UnRDLL.c: undefined reference to [email protected]' UnRDLL.o(.text+0x366):UnRDLL.c: undefined reference to RAROpenArchiveEx @ 4 ' UnRDLL.o (.text + 0x3d6): UnRDLL.c: référence non définie à [email protected]' UnRDLL.o(.text+0x41c):UnRDLL.c: undefined reference to RARReadHeaderEx @ 8' UnRDLL.o (.text + 0x4c2): UnRDLL.c: référence non définie à [email protected]' UnRDLL.o(.text+0x4fa):UnRDLL.c: undefined reference to RARCloseArchive @ 4'

Google a suggéré d'ajouter --def UnRDLL.def et -lunrar aux options de l'éditeur de liens et de copier également le fichier .lib dans le répertoire Dev-Cpp \ lib.

Pouvez-vous s'il vous plaît m'expliquer ce que je fais mal? Si possible, dites-moi quels fichiers doivent être dans le répertoire du code source, ce qui doit être avec les bibliothèques, ce qui doit être ajouté au projet et quelles sont les options d'éditeur de liens nécessaires, ainsi que tout ce que j'ai manqué .

EDIT: Je ne sais pas pourquoi, mais je viens de refaire manuellement tous les paramètres comme décrit ci-dessus et maintenant cela fonctionne. Merci pour votre aide de toute façon.

Répondre

2

Je recommande d'utiliser Visual Studio Express (disponible gratuitement auprès de Microsoft au lien fourni) pour compiler et lier votre programme. Je pense que c'est un peu plus simple dans ce cas-ci que les autres outils que vous avez mentionnés, bien que ce soit juste mon opinion personnelle.

Je recommande d'utiliser une disposition similaire à celle de votre projet:

 
\myproject 
    \src 
    \include 
\thirdparty 
    \bin 
    \lib 
    \include 

vos fichiers source C/C++ habiteront sous myproject\src et vos fichiers d'en-tête vivre sous myproject\include. Les fichiers de bibliothèque que vous avez téléchargés en direct sous thirdparty: la DLL appartient à bin, le fichier .lib et le fichier .def appartiennent à lib, et les fichiers d'en-tête de la bibliothèque appartiennent à include.

Ensuite, vous devez configurer votre projet dans Visual Studio Express. Dans les propriétés de votre projet, sous Liaison -> Général, ajoutez \thirdparty\lib aux répertoires de bibliothèque supplémentaires. Sous Linker -> Input, ajoutez unrar.lib aux dépendances supplémentaires. Cela indique à Visual Studio Express le nom et l'emplacement de votre bibliothèque tierce afin qu'elle puisse le lier à votre application principale. Lorsque vous exécutez votre programme, vous devez copier unrar.dll dans le répertoire de sortie de votre projet pour que votre programme puisse le charger.

Cela devrait vous aider à y aller ...

+0

J'ai déjà utilisé VSE et je préfère Eclipse (ou DevCpp pour les petits projets). Je sais qu'il est souvent plus facile d'utiliser des DLL avec VSE, mais je préfère apprendre à les utiliser avec d'autres IDE. – thornate

+0

Assez juste. J'ai joué avec Eclipse et DLL avant, mais je l'ai trouvé trop frustrant, personnellement. C'est un cas spécifique où l'utilisation de la chaîne d'outils «fournie par le fournisseur» aide vraiment la productivité, l'OMI. –

1

Retour dans la journée, Borland utilisé pour fournir un outil pour créer un fichier lib à partir d'un fichier DEF.

Dans le monde moderne, votre meilleur pari est d'ajouter le fichier lib à votre projet sous Projet-> Propriétés Config Props-> Linker-> Input-> Dépendances supplémentaires. Vous devrez peut-être ajouter l'emplacement du fichier lib à Props-> Linker-> General-> Lib Libs supplémentaires. Assurez-vous que la DLL est sur votre chemin ou copiée avec les exécutables.

+0

De quel IDE parlez-vous? – thornate

+0

VC2005. VC2008 sera très similaire. –

Questions connexes