0

Comment lier le fichier .exp dans C?

Je peux lier des fichiers .so, .o, .a, .la, lo et .slo.
Mais il y a le fichier httpd.h avec le fichier .exp seulement (pas de fichiers .so, .o, .a, .la, lo et .slo) et j'ai besoin d'utiliser une fonction de celui-ci.
Et, je reçois une erreur de symbole indéfini.Ubuntu, Comment lier le fichier .exp en C?

undefined symbol: ap_cstr_casecmp

+0

Essayez d'ajouter '-lapr-1' à votre ligne de commande du compilateur ou du chargeur. –

+0

Encore une fois la même erreur, httpd.h n'est ni une partie de avr ni apr-util mais apache2 lui-même, d'autres fonctions de httpd.h fonctionnent bien en effet. –

Répondre

2

fichier .exp contient la liste des symboles exportés uniquement. Il n'y a aucun intérêt à lier avec, vous avez besoin de la bibliothèque pour lier.

+0

Cette fonction 'ap_cstr_casecmp' est dans httpd.h mais j'obtiens un 'symbole indéfini: ap_cstr_casecmp'. Comment lier correctement pour se débarrasser de cette erreur? –

2

.exp is used on Windows only et n'est d'aucune utilité sur Ubuntu. Vous avez besoin d'un fichier .so ou .a pour lier sur Ubuntu.

Vous devez trouver le fichier de bibliothèque (lib<name>.so ou lib<name>.a ou similaire, où <name> est le nom de la bibliothèque) et redirigent ensuite avec -L<path> -l<name><path> devrait être remplacé par le chemin vers le répertoire qui contient le fichier de bibliothèque. Si <path> est /usr/lib alors -L<path> peut être omis.

+0

Cette fonction 'ap_cstr_casecmp' est dans httpd.h mais j'obtiens' un symbole indéfini: ap_cstr_casecmp'. Comment lier correctement pour se débarrasser de cette erreur? Il y a un fichier dans le répertoire lib httpd.exp dans Ubuntu, alors quel est leur usage? –

+0

Voir la réponse mise à jour. – Rufflewind

+0

Pas un tel fichier, d'autres fonctions du même fichier d'en-tête fonctionnent bien, mais ce n'est pas le cas. –