Ma DLL ne fonctionne que sur un PC ?

Résolu
Nyuki Messages postés 21 Date d'inscription mardi 6 mai 2008 Statut Membre Dernière intervention 13 août 2013 - 13 mars 2009 à 21:49
Nyuki Messages postés 21 Date d'inscription mardi 6 mai 2008 Statut Membre Dernière intervention 13 août 2013 - 28 mars 2011 à 19:10
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

Nyuki Messages postés 21 Date d'inscription mardi 6 mai 2008 Statut Membre Dernière intervention 13 août 2013
14 mars 2009 à 08:41
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
3
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
13 mars 2009 à 22:25
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
0
Nyuki Messages postés 21 Date d'inscription mardi 6 mai 2008 Statut Membre Dernière intervention 13 août 2013
13 mars 2009 à 22:32
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Nyuki Messages postés 21 Date d'inscription mardi 6 mai 2008 Statut Membre Dernière intervention 13 août 2013
14 mars 2009 à 17:01
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,
0
Nyuki Messages postés 21 Date d'inscription mardi 6 mai 2008 Statut Membre Dernière intervention 13 août 2013
28 mars 2011 à 19:10
Merci pour l'info. c'est sympa.

@+
0
Rejoignez-nous