Comment faire pour integrer une dll dans son .exe

Comment faire pour integrer une dll dans son .exe - C++ - Programmation

Marsh Posté le 17-04-2003 à 03:43:10    

Bonjour,
je code sous visual C++
j'ai actuellement un .exe et une dll
mais j'aimerai bien que ma dll et mon .exe soit combines ensemble en un seul et unique .exe
Quelqu'un saurait il comment faire ca?
Je vous remercie d'avance pour votre aide
 
 
 

Reply

Marsh Posté le 17-04-2003 à 03:43:10   

Reply

Marsh Posté le 17-04-2003 à 06:29:58    

Alexboss a écrit :

Bonjour,
je code sous visual C++
j'ai actuellement un .exe et une dll
mais j'aimerai bien que ma dll et mon .exe soit combines ensemble en un seul et unique .exe
Quelqu'un saurait il comment faire ca?
Je vous remercie d'avance pour votre aide
 


 
Salut, ca fait pas trop longtemps que je code sous Win, donc je ne suis pas sûr de te mettre sur le bon chemin mais l'une des solutions que j'ai trouvée est la suivante :
 
http://logitheque.zdnet.fr/logi/cg [...] pl?ID=9018
 
 
 
Pour le reste, linker la .lib dans les propriétés de ton projet.

Reply

Marsh Posté le 17-04-2003 à 07:23:33    

Oui, il faut que tu trouves la lib statique correspondant à ta dll (qui elle est la lib dynamique).
Si tu l'as pas ben faut recourir à un soft comme t'as donné iS@mi.
Si t'as pas la lib statique et pas de sous pour le soft, tu peux te rabattres sur un installeur qui livre ton prog + la dll.
C'est quoi comme dll ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 17-04-2003 à 08:16:52    

HelloWorld a écrit :

Oui, il faut que tu trouves la lib statique correspondant à ta dll (qui elle est la lib dynamique).
Si tu l'as pas ben faut recourir à un soft comme t'as donné iS@mi.
Si t'as pas la lib statique et pas de sous pour le soft, tu peux te rabattres sur un installeur qui livre ton prog + la dll.
C'est quoi comme dll ?


 
Il y a quelques années, j'ai porté sur Mac une application PC qui utilisait plusieurs .dll écrites avec Delphi Borland.
 
Je suis en train d'essayer de m'amuser à importer une de ces .dll sous VC++ mais hélas je n'y parviens pas.
 
Je ne sais pas si tu sais m'aider ou si ce que je veux faire est possible ?
 
Voici le code dans borland :
 

Code :
  1. Function GetApiVersion(var Major:Integer; var Minor:Integer):Integer; external 'gttreg.dll';


 
Moi dans mon projet, j'ai déclaré de cette façon :
 

Code :
  1. extern "C" int GetApiVersion(int Major, int Minor);


 
J'ai utilisé le petit programme "Dll To Bin" pour avoir le bin de ce dll.
 
Je l'ai importée dans le projet de cette façon
 
#pragma comment(lib, "gttreg.lib" )
 
Sinon, je suis obligé d'utiliser un lib pour ce que je veux faire (je m'en fou un peu que les fonctions soient ratachées à l'application en réalité ) ?
 
 
Voilà,
Merci
 
PS: l'erreur que j'ai est qu'il ne trouve pas le code de la fonction !!!
 
WinTournee error LNK2005: IsValidUser already defined in gttreg.lib(gttregimp.obj)


Message édité par iS@mi le 17-04-2003 à 08:18:31
Reply

Marsh Posté le 17-04-2003 à 08:32:21    

Normalement, avec les dll, y'a une histoire d'__export.
T'as essayé un truc du genre :
extern "C" WINBASEAPI int WINAPI GetApiVersion(int Major, int Minor);  
ou DECLSPEC_IMPORT (un truc du genre ...)


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 17-04-2003 à 08:34:19    

Ton erreur est qu'il trouve 2 fois la fonction ... t'as pas oublié un extern "C" pour IsValidUser ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 17-04-2003 à 08:41:46    

HelloWorld a écrit :

Ton erreur est qu'il trouve 2 fois la fonction ... t'as pas oublié un extern "C" pour IsValidUser ?


 
 

Code :
  1. #if !defined(D2L_GTTREG_SUPP_H__7B8D784B_7F1A_3B92_2082_5433415D4FD3__INCLUDED_)
  2. #define D2L_GTTREG_SUPP_H__7B8D784B_7F1A_3B92_2082_5433415D4FD3__INCLUDED_
  3. #if _MSC_VER > 1000
  4. #pragma once
  5. #endif // _MSC_VER > 1000
  6. #pragma comment(lib, "gttreg.lib" )
  7. #ifdef __cplusplus
  8. extern "C" {
  9. #endif
  10. #include <windows.h>
  11. WINBASEAPI int WINAPI GetApiVersion(int Major, int Minor); 
  12. BOOL WINAPI GTTREG_DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved);
  13. #ifdef __cplusplus
  14. }
  15. #endif
  16. #endif // !defined(D2L_GTTREG_SUPP_H__7B8D784B_7F1A_3B92_2082_5433415D4FD3__INCLUDED_)


 
C'est le header que m'a fait le petit soft de convertion.
 
Mais bon peut-être qu'il n'est pas possible d'importer une .dll faite sous Borland Pascal.
 
Ce qui est bizare c'est qu'il n'arrive pas à linker
 
WinTournee error LNK2019: unresolved external symbol __imp__GetApiVersion@8 referenced in function "protected: virtual int __thiscall CTourneesDlg::OnInitDialog(void)" (?OnInitDialog@CTourneesDlg@@MAEHXZ)
 
 
et qu'il me dit également
 
WinTournee fatal error LNK1120: 1 unresolved externals
 

Reply

Marsh Posté le 17-04-2003 à 21:40:50    

Ca doit etre une histoire de nommage de fonction ...
Mais désolé je patoge un peu :(


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Sujets relatifs:

Leave a Replay

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