OVH Cloud OVH Cloud

Fonction extern non definie dans une DLL

3 réponses
Avatar
Olivier
Bonjour

Est-il possible d'avoir une fonction extern (globale au sens C) (donc
uniquement la declaration) dans
une DLL extension avec le corps de la fonction definie dans l'application,
si oui comment ?


Merci,

3 réponses

Avatar
Remi Thomas - MVP
"Olivier" wrote in message
news:dfrk6g$ob6$
Bonjour

Est-il possible d'avoir une fonction extern (globale au sens C) (donc
uniquement la declaration) dans
une DLL extension avec le corps de la fonction definie dans l'application,
si oui comment ?


Merci,





Hello,
De façon explicite non car le DLL serait dépendente de l'EXE et donc qui
charger en premier?
Sinon tu peux t'en sortir avec un pointeur de fonction que tu donnes à la
DLL.

Rémi

--
Rémi THOMAS
MVP Visual C++ .NET
http://www.pixel-technology.com/rthomas
Avatar
Remi THOMAS
"Olivier" wrote in message
news:dfrk6g$ob6$
Bonjour

Est-il possible d'avoir une fonction extern (globale au sens C) (donc
uniquement la declaration) dans
une DLL extension avec le corps de la fonction definie dans l'application,
si oui comment ?


Merci,





Hello,
De façon explicite non car le DLL serait dépendente de l'EXE et donc qui
charger en premier?
Sinon tu peux t'en sortir avec un pointeur de fonction que tu donnes à la
DLL.

Rémi

--
Rémi THOMAS
MVP Visual C++ .NET
http://www.pixel-technology.com/rthomas
Avatar
Frédéric Lachasse
"Olivier" wrote in message
news:dfrk6g$ob6$
Bonjour

Est-il possible d'avoir une fonction extern (globale au sens C) (donc
uniquement la declaration) dans
une DLL extension avec le corps de la fonction definie dans l'application,
si oui comment ?



Il suffit d'exporter la fonction de l'exécutable comme si c'était une DLL
(__declspec(dllexport), ou EXPORT dans un fichier .DEF). Au moment de la
création de l'exécutable, un .LIB sera créer avec le même nom que l'EXE et
devra être utilisé pour linker la DLL.

Cependant, si l'exécutable importe des fonctions ou variables de la DLL,
donc dépend du .LIB de la DLL, il est nécessaire de créer les .LIB (ou au
moins l'un des .LIB) sans créer l'EXE ou la DLL. C'est possible avec la
commande "LIB /DEF".

Voir la doc MSDN pour les détails

--
Frédéric Lachasse - ECP86