Dll est-elle classique

Résolu
cs_avg Messages postés 97 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 20 août 2011 - 7 avril 2010 à 14:50
cs_avg Messages postés 97 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 20 août 2011 - 8 avril 2010 à 11:49
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

cs_avg Messages postés 97 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 20 août 2011
8 avril 2010 à 11:49
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
3
cs_avg Messages postés 97 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 20 août 2011
7 avril 2010 à 15:05
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);
 }
 
 	
}
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 avril 2010 à 18: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++
0
cs_avg Messages postés 97 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 20 août 2011
7 avril 2010 à 19:15
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
0

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

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 avril 2010 à 20:18
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++
0
cs_avg Messages postés 97 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 20 août 2011
8 avril 2010 à 10:27
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
0
cs_avg Messages postés 97 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 20 août 2011
8 avril 2010 à 10:34
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++
0
cs_avg Messages postés 97 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 20 août 2011
8 avril 2010 à 11:13
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
0
Rejoignez-nous