Comment on fait pour créer une dll à partir de sources C ?

Comment on fait pour créer une dll à partir de sources C ? - Programmation

Marsh Posté le 21-11-2001 à 15:52:00    

Voilà : j'ai récupérer des sources C gratuits de compression / décompression de fichier.
j'ai extrait les fonctions dont j'avais besoin, & j'en ai rajouté deux qui doivent me servir pour appeler les fonctions de la DLL que je veux créer. Cette Dll sera appelée par un programme powerBuilder.
Lorsque je compile mon code, le compilo C me renvoie le message suivant après linkage :

Citation :


error: no exports in lzw.dll


je comprends pas ce que ça veut dire.
les fonctions que je veux pouvoir appeler ds cette dll sont les suivantes :

Code :
  1. int compresser_fic(char *fic_source , char *fic_dest);
  2. int decompresser_fic(char *fic_source , char *fic_dest);


Comment faut-il faire ?


---------------
di. / www.diredaredare.org - Ailes de la ville
Reply

Marsh Posté le 21-11-2001 à 15:52:00   

Reply

Marsh Posté le 21-11-2001 à 15:53:17    

ben dans une dll faut exporter des functions...
c le code de dll que tu compile c bien ca?

 

[edtdd]--Message édité par TheJackal--[/edtdd]

Reply

Marsh Posté le 21-11-2001 à 15:58:31    

Oui, c'est bien ça, je compile le code d'une dll. Comment on fait pour exporter les fonctions ?


---------------
di. / www.diredaredare.org - Ailes de la ville
Reply

Marsh Posté le 21-11-2001 à 15:59:14    

sur le compilo de microsoft ya : __declspec(dllexport)
c du specific kro je crois
 
sinon ya export "c" je crois
 
tu c ou caler ca?

 

[edtdd]--Message édité par TheJackal--[/edtdd]

Reply

Marsh Posté le 21-11-2001 à 16:07:55    

TheJackal a écrit a écrit :

sur le compilo de microsoft ya : __declspec(dllexport)
c du specific kro je crois
 
sinon ya export "c" je crois
 
tu c ou caler ca?  
 
 




 
Lors de la déclaration de la fonction:
extern "C" __declspec(dllexport) int mafonction(int a);
 
Lors de la définition de la fonction:
__declspec(dllexport) int mafonction(int a)
{
...
}

Reply

Marsh Posté le 21-11-2001 à 16:11:54    

merci :jap:


---------------
di. / www.diredaredare.org - Ailes de la ville
Reply

Marsh Posté le 21-11-2001 à 16:26:41    

SoWhatIn22 a écrit a écrit :

 
 
Lors de la déclaration de la fonction:
extern "C" __declspec(dllexport) int mafonction(int a);
 
Lors de la définition de la fonction:
__declspec(dllexport) int mafonction(int a)
{
...
}  




le extern "C" sert a pas grand chose
pas besoin de mettre sur les deux:

Code :
  1. int __declspec(dllexport) mafonction(int a);
  2. ...
  3. int mafonction(int a)
  4. {
  5. ...
  6. }

 

[edtdd]--Message édité par TheJackal--[/edtdd]

Reply

Marsh Posté le 21-11-2001 à 16:56:07    

Le __declspec(dllexport) il ne faut pas le mettre en dur...
parce que dans l'executable (exe ou dll) qui utilisera ta Dll il faudra mettre __declspec(dllimport) le mieux est donc de faire commencer tes .h par  
#ifndef COMPRESS_DLL
#define COMPRESS_DLL __declspec(dllimport)  
#endif
 
et sur la ligne de commande pour ta Dll tu ajoutes
-DCOMPRESS_DLL=__declspec(dllexport)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed