Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2290 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  créer une dll à partir d'une librairie statique

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

créer une dll à partir d'une librairie statique

n°1286701
gilbertc
Posté le 18-01-2006 à 15:56:47  profilanswer
 

Bonjour,
 
j'aimerai créer une dll à partir d'une libriairie statique (.lib), c'est une ibrairie fourni par un fabricant et je ne possède rien d'autre qu'un .h qui contient les fonctions prototypée..
 
comment créer une dll à partir de cela? je crois qu'il faut un fichier .def qui contient la liste des fonctions.. comment le générer?
 
avec gcc ou visual c++ 2005
 
merci d'avance.

mood
Publicité
Posté le 18-01-2006 à 15:56:47  profilanswer
 

n°1286708
francky06l
Posté le 18-01-2006 à 16:03:12  profilanswer
 

Le mieux c'est de creer un "wrapper" de tes functions, autrement dit des functions que tu exportes (style WINAPI ...) et qui appelle les functions de ta lib static.
Tu peux te creer un .h de ta DLL, ou meme pas besoin si tu la charge dynamiquement et recupere les point d'entree.
 
Pour le .def, la syntaxe :
 
DESCRIPTION 'ma Dll"
VERSION x.y
 
// la c'est le plus important
 
EXPORTS
      FunctionName1
      FunctionName2
       .....
 
 

n°1286718
gilbertc
Posté le 18-01-2006 à 16:17:33  profilanswer
 

Merci pour l'aide, j'ai créé un fichier .DEF comme indiqué avec la liste des fonctions.
 
le problème c'est que des fonctions dans des classes différentes ont le même nom.. alors il me met ce message lorsque je compile :
 

Code :
  1. Warning LNK4022 : cannot find unique match for symbol 'NomDeMaFonction'


 
dois-je mettre : NomDeLaClasse::NomDeLaFonction ? ou qqch du genre...
 
en fait je ne m'y connait pas du tout en c++  :sweat:


Message édité par gilbertc le 18-01-2006 à 16:20:28
n°1286732
francky06l
Posté le 18-01-2006 à 16:25:43  profilanswer
 

Alors c'est un peu plus complique, si tu as des classes ca veut dire qu'il faut des objets pour appeller les functions (qui deviennent des methodes). Sauf evidemment si ce sont des methodes statiques, auquel cas tu peux mettre le nom de la classe devant oui. Si ces objects sont instancies dans la library (apres une intialization tu peux appeller la methode de l'object).
Je peux pas en dire beaucoup plus, vu le peu d'information ..mais vraisemblablement il faut que tes functions instancient un object pour appeller les methodes de l'objet...
Au fait pourquoi veut tu en faire une DLL, tu peux peut etre integrer la lib static et instancie les objects dans ton application ??

n°1286748
gilbertc
Posté le 18-01-2006 à 16:35:30  profilanswer
 

En fait ouais si je peux appeler directement la librairie statique ça m'arrangerait bien, simplement je ne crois pas que je puisse le faire.
 
Je développe mon application en vb .net 2005 et la librairie statique est en c++ j'ai lu qu'une librairie statique ne pouvait êtr eutilisée par un soft ds un autre langage, alors qu'une dll le pouvait.
 
voici le .h fourni par le fabricant : cyAPI.h
 
et le .def que j'ai fait : cyAPI.def
 

n°1286756
francky06l
Posté le 18-01-2006 à 16:44:17  profilanswer
 

Vu les objects, le .def que tu as ne marchera pas ...
Je pense que le plus simple derait de creer les functionalites que tu veux dans ton appli VB dans la DLL elle-meme. J'ai pas vraiment le temps de tout lire, mais en gros :
 
- Tu cree l'object dans la DLL avec une function INIT, tu recupere un "handle" de cet obbject dans ton appli
- Tu crees les function dans la DLL, tu passes le handle de l'object a chaque appel, tu appelle les functionalites de l'object
- Tu cree une function de  cleanup de l'object quand tu en a plus besoin ..
 
C'est plus simple si tu n'as besoin que d'un des objects, et que les operations sont simples. Sinon demande au fournisseur ou sur les forums, peut etre quelqu'un a deja ecrit une equivalence

n°1286775
gilbertc
Posté le 18-01-2006 à 16:57:21  profilanswer
 

okay.. merci bien pour l'aide
 
 
je vais faire cela... et je verrai bien  :wahoo:
 
lol mais y'a juste une chose qi m'échappe... comment faire ces init etc en vb j'ai compris... mais ma dll n'existe pas pr l'instant...

n°1286780
francky06l
Posté le 18-01-2006 à 17:05:39  profilanswer
 

les Init et les functions de ta dll tu les ecrit en C / C++ dans la DLL. Tu appelles ces functions depuis ton code VB.

n°1286781
gilbertc
Posté le 18-01-2006 à 17:07:27  profilanswer
 

ok parfait.. merci bien


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  créer une dll à partir d'une librairie statique

 

Sujets relatifs
comment exploiter une librairie en .NET?Qui veut bien m aider à créer mon site commercial?
VBA Excel - Retrouver RGB à partir de ColorIndex[AsP / JAVA / ...] créer un champ de texte formatable
Créer des icônes avec transparencecreer un forum sur mon site avec phpbb
comment créer un TABLEAU en PHP ?partir le code VBA d'un bouton d'un formulaire access
etablir une liste de mot a partir d'une ligne txtCréer une requete SELECT a une base de donnée ACCESS
Plus de sujets relatifs à : créer une dll à partir d'une librairie statique


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR