créer une dll à partir d'une librairie statique - C++ - Programmation
Marsh Posté le 18-01-2006 à 16:03:12
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
.....
Marsh Posté le 18-01-2006 à 16:17:33
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 :
|
dois-je mettre : NomDeLaClasse::NomDeLaFonction ? ou qqch du genre...
en fait je ne m'y connait pas du tout en c++
Marsh Posté le 18-01-2006 à 16:25:43
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 ??
Marsh Posté le 18-01-2006 à 16:35:30
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
Marsh Posté le 18-01-2006 à 16:44:17
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
Marsh Posté le 18-01-2006 à 16:57:21
okay.. merci bien pour l'aide
je vais faire cela... et je verrai bien
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...
Marsh Posté le 18-01-2006 à 17:05:39
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.
Marsh Posté le 18-01-2006 à 15:56:47
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.