Dll est-elle classique [Résolu]

Signaler
Messages postés
97
Date d'inscription
lundi 5 novembre 2007
Statut
Membre
Dernière intervention
20 août 2011
-
Messages postés
97
Date d'inscription
lundi 5 novembre 2007
Statut
Membre
Dernière intervention
20 août 2011
-
Salut à tous,

j'ai réaliser une dll avec visual studio 2005
j'ai réaliser une Applet java qui peut charger n'importe qu'elle dll, parcequ'elle est Signé ,mais seulement ma dll ne peut pas non seulement au niveau de navigateur mais aussi au niveau de Eclipse.
je croit que l'erreur c'est de dll comment je peut connaitre qu'elle est classique ou non si ça me résolu le probléme sinon c'est quoi l'erreur
Merci pour vos aides

8 réponses

Messages postés
97
Date d'inscription
lundi 5 novembre 2007
Statut
Membre
Dernière intervention
20 août 2011

enfin j'ai résolu mon probléme Mon Applet ne vient pas de voir ma dll TestDLL.dll car il faut ajouter les fichiers dll que TestDLL.dll l'utilise sur le même dossier que monApplet l'accede comme System32
Messages postés
97
Date d'inscription
lundi 5 novembre 2007
Statut
Membre
Dernière intervention
20 août 2011

voila la dll :
#include <windows.h>
#include
#include "MORPHO_User.h"
#include "MORPHO_Device.h"
#include "MORPHO_Database.h"
#include "MORPHO_Errors.h"
#include "MORPHO_FieldDescriptor.h"

using namespace std ;

#pragma comment(lib,"MORPHO_SDK.lib")
HMODULE hinstDLL;
int res;
char *mso_name,*mso_prop;
C_MORPHO_User u,nw,idf;
C_MORPHO_Database cdb;
C_MORPHO_Device c;
C_MORPHO_TemplateList tmp_list;
unsigned long t,nb_rcd,fld_ln,fld_uln,nb_user;
unsigned char *id,*fld_dt,*fld_nm,*fld_nwnm,*fld_udt;
T_MORPHO_FIELD_ATTRIBUTE fld_att;
unsigned short fld_sz;


BOOL APIENTRY DllMain(HANDLE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH	: OutputDebugString("DLL_PROCESS_ATTACH\n"); break;
case DLL_THREAD_ATTACH	: OutputDebugString("DLL_THREAD_ATTACH\n"); break;
case DLL_THREAD_DETACH	: OutputDebugString("DLL_THREAD_DETACH\n"); break;
case DLL_PROCESS_DETACH	: OutputDebugString("DLL_PROCESS_DETACH\n"); break;
}

return true;
}

///////////////////////////////////////////////////////////////////////////////
// Initialize
//
////////////////////////////////////////////////////////////////////////////////
extern "C" int WINAPI Initialize()
{
hinstDLL=LoadLibrary("MORPHO_SDK.dll");
if (hinstDLL == NULL) {
          return 0;
     }
   return 1;
// Write here all the code you need to initialize the DLL
  

}

////////////////////////////////////////////////////////////////////////////////
// Release
//
////////////////////////////////////////////////////////////////////////////////
extern "C" void WINAPI Release()
{
FreeLibrary(hinstDLL);

// Write here all the code you need to free everything ...

}

////////////////////////////////////////////////////////////////////////////////
// opendevice
//
////////////////////////////////////////////////////////////////////////////////
extern "C" int WINAPI opendevice()
{
c=C_MORPHO_Device::C_MORPHO_Device();
res=c.OpenDevice(-1,115200);
 
return (res);
}
////////////////////////////////////////////////////////////////////////////////
// initUsb
//
////////////////////////////////////////////////////////////////////////////////
extern "C" int WINAPI initUsb()
{
res=c.InitUsbDevicesNameEnum(&t);
 if(res==0)
 {
 int nb=(int)t;
 return(nb);
 }else
 {
 return(res);
 }
}
////////////////////////////////////////////////////////////////////////////////
// getdatabase
//
////////////////////////////////////////////////////////////////////////////////
extern "C" int WINAPI getdatabase()
{

 
res=c.GetDatabase(0,cdb);
 return(res);

}
////////////////////////////////////////////////////////////////////////////////
// getnbrrecord
//
////////////////////////////////////////////////////////////////////////////////
extern "C" int WINAPI getnbrrecord()
{
res=cdb.GetNbUsedRecord(nb_rcd);
 if(res==0)
 {
 int nbr=(int)nb_rcd;
 return(nbr);
 }else
 {
 return(res);
 }

}
////////////////////////////////////////////////////////////////////////////////
// getuser
//
////////////////////////////////////////////////////////////////////////////////
extern "C" int WINAPI getuser(int id)
{

      unsigned char reg[50];
      sprintf((char*)reg, "%i", id);
  res=cdb.GetUser(MORPHO_USER_ID_MAXLEN,reg,u);
 

 return(res);
 	
}
////////////////////////////////////////////////////////////////////////////////
// enroll
//
////////////////////////////////////////////////////////////////////////////////
extern "C" int WINAPI enroll()
{

     res=u.Enroll(0,0x01,MORPHO_PK_COMP,0,NULL,NULL);
 

 return(res);
 	
}

////////////////////////////////////////////////////////////////////////////////
// identify
//
////////////////////////////////////////////////////////////////////////////////
extern "C" int WINAPI identify()
{

     res=cdb.Identify(0x11,MORPHO_FAR_5,0,NULL,NULL,idf);
 if(res==0)
 {
 res=idf.GetField(0,fld_uln,fld_udt);
 int nv=atoi((char*)fld_udt);
 return(nv);
 }else{
 return(res);
 }
 
 	
}
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
26
Regarde avec depends.exe, si tu vois tes noms de fonctions exportés comme il se doit (NON DECORES !!) alors tout va bon.
Ensuite fais un mini prog en C (pas en C++ ni aucun autre truc exotique) pour tester ta DLL.

ciao...
BruNews, MVP VC++
Messages postés
97
Date d'inscription
lundi 5 novembre 2007
Statut
Membre
Dernière intervention
20 août 2011

Salut,
j'ai réaliser une dll vide avec Visual Studio 2005 mon Applet peut le charger mais pour lorsque j'ajoute les fonctions a exporté elle ne peut pas la charger
à chaque fois j'elimine une partie de code de dll et je test il parait que à ce code la l'Applet ne charge pas la dll

extern "C" void WINAPI Release()
{
FreeLibrary(hinstDLL);

// Write here all the code you need to free everything ...

}

tous les fonctions à exporté sont comme cette structure pouvez vous m'aider à la modifier
Merci pour votre aide
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
26
Je ne bosse qu'en C ou ASM, je ne pourrais donc pas tester ton java.

hinstDLL=LoadLibrary("MORPHO_SDK.dll");
Pourquoi charger en dynamic ???
Link direct ta DLL avec celle que tu veux utiliser, le loader system se chargera IMPLICITEMENT du LoadLibrary comme du FreeKlibrary.

ciao...
BruNews, MVP VC++
Messages postés
97
Date d'inscription
lundi 5 novembre 2007
Statut
Membre
Dernière intervention
20 août 2011

bonjour,

voila l'exception malgrés qye j'ai signé le jar de l'applet et jna.jar et met le dll sur le dossier System32 que peut mon Applet l'accede car elle peut charger msvcrt et les autres dll mais ma dll si j'ajoute le code des fonctions à exporté il ne voit pas la dll

Exception in thread "AWT-EventQueue-1" java.lang.UnsatisfiedLinkError: Unable to load library 'newdll': Le module spécifié est introuvable.


alors que dll existe je suis sure que c'est de la maniére dont j'écrit le code de la dll il se peut de externe "c"
Merci pour votre aide
Messages postés
97
Date d'inscription
lundi 5 novembre 2007
Statut
Membre
Dernière intervention
20 août 2011

pour supprimer la notion de class c'est à dire :: en c++ j'ai réaliser cette dll qu'appelle l'autre dll puis je l'utilise en java car java ne connait pas les class c++
Messages postés
97
Date d'inscription
lundi 5 novembre 2007
Statut
Membre
Dernière intervention
20 août 2011

il parait que l'erreur c'est de ce portion de code
C_MORPHO_User u,nw,idf;
C_MORPHO_Database cdb;
C_MORPHO_Device c;
C_MORPHO_TemplateList tmp_list;

c'est sont des class déclarer dans Morpho_User.h et créer par un autre programmeur dans la dll que je l'appelle MORPHO_SDK.dll
Note: je n'ai as créer ce dll
Mais j'ai de documentation