Ma DLL ne fonctionne que sur un PC ?

[Résolu]
Signaler
Messages postés
21
Date d'inscription
mardi 6 mai 2008
Statut
Membre
Dernière intervention
13 août 2013
-
Messages postés
21
Date d'inscription
mardi 6 mai 2008
Statut
Membre
Dernière intervention
13 août 2013
-
Bonjour,

J'ai réalisé une DLL "fonction.dll" en C/C++ sous un Borland Builder (C++ Builder V3.0) :
projet DLL : Name = fonction.cpp
#include <vcl.h>
#pragma hdrstop
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
{
    return 1;
}
//---------------------------------------------------------------------------

extern "C" __declspec(dllexport) void __stdcall HelloWorld(void )
{
    MessageBox(NULL,"Hello !","Message",MB_OK);
}

extern "C" __declspec(dllexport) double __stdcall nfo(double a )
{
    return a*2;
}

j'ai créé un projet  en VS6

Private Declare Sub HelloWorld Lib "fonction.dll" ()
Private Declare Function nfo Lib "fonction.dll" (ByVal nbr As Double) As Double

Private Sub Command1_Click()
HelloWorld
Text1.Text = nfo(8)
End Sub

Tout fonctionne bien sur mon PC , sauf que quand je met Projet1.exe + fonction.dll sur un autre PC j'ai le message d'erreur suivant
Erreur d'execution 53 : fichier introuvable fonction.dll

Donc j'ai mis la DLL dans system32 puis en console j'ai fait un REGSVR32 fonction.dll et j'ai le message d'erreur suivant
LoadLibrary("fonction.dll") a échoué - le module spécifié est introuvable

Est-ce normal ou pas ? Et si c'est pas normal que faire ?

Dans l'attente de vos précieuse réponse, je vous remercie d'avance.

Nyuki.

6 réponses

Messages postés
21
Date d'inscription
mardi 6 mai 2008
Statut
Membre
Dernière intervention
13 août 2013

Bonjour à tous,

j'ai continué mes recherches et je suis tombé sur GCC (MinGW sous windows), j'arrive à faire des dll qui fonctionne sur plusieurs machine utilisable depuis VS6 sans problème. Cependant je perds le cotés interface graphique que proposé Builder .

On peut faire des fonction en C/C++; c'est le TOP .

- lien pour le télécharger
 http://www.zdnet.fr/telecharger/windows/fiche/0,39021313,11010878s,00.htm

- doc pour créer la DLL
http://cygwin.com/cygwin-ug-net/dll.html#dll-build

Pour moi mon problème est résolu, même si je comprends pas pourquoi ma première DLL ne fonctionne que sur le poste où j'ai compilé la DLL 

Nyuki,

PS : pour créer ma DLL j'ai juste utiliser les deux premières commandes
gcc -c mydll.c
gcc -shared -o mydll.dll mydll.o
Messages postés
3
Date d'inscription
mardi 22 juin 2010
Statut
Membre
Dernière intervention
31 mars 2014

Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
14
Dans ton cas, la DLL doit être dans le même répertoire que l'application.
Et pas question de faire regsvr32, ta DLL n'est pas une ActiveX
Messages postés
21
Date d'inscription
mardi 6 mai 2008
Statut
Membre
Dernière intervention
13 août 2013

j'ai le même problème avec la dll mis dans le même répertoire que l' exe.

merci comme même, je ne savais pas que la commande regsvr32 ne servait que pour les ActiveX.

Nyuki
Messages postés
21
Date d'inscription
mardi 6 mai 2008
Statut
Membre
Dernière intervention
13 août 2013

Re,

Encore moi mais je viens de faire des tests plus pointu avec GCC et je me suis rendu compte qu'il n'était  pas complet au niveau des bibliothèque, donc retour à la case départ. Mais google est notre amis,  j'ai donc trouvé que DevC++ faisait parfaitement l'affaire, et là aucun soucis...

voilà, voilà, rien d'autre à ajouter, à part que VIVE Code-Source !

Nyuki,
Messages postés
21
Date d'inscription
mardi 6 mai 2008
Statut
Membre
Dernière intervention
13 août 2013

Merci pour l'info. c'est sympa.

@+