Dll est-elle classique [Résolu]

cs_avg 97 Messages postés lundi 5 novembre 2007Date d'inscription 20 août 2011 Dernière intervention - 7 avril 2010 à 14:50 - Dernière réponse : cs_avg 97 Messages postés lundi 5 novembre 2007Date d'inscription 20 août 2011 Dernière intervention
- 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
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
cs_avg 97 Messages postés lundi 5 novembre 2007Date d'inscription 20 août 2011 Dernière intervention - 8 avril 2010 à 11:49
3
Merci
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

Merci cs_avg 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de cs_avg
cs_avg 97 Messages postés lundi 5 novembre 2007Date d'inscription 20 août 2011 Dernière intervention - 7 avril 2010 à 15:05
0
Merci
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);
 }
 
 	
}
Commenter la réponse de cs_avg
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 7 avril 2010 à 18:26
0
Merci
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++
Commenter la réponse de BruNews
cs_avg 97 Messages postés lundi 5 novembre 2007Date d'inscription 20 août 2011 Dernière intervention - 7 avril 2010 à 19:15
0
Merci
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
Commenter la réponse de cs_avg
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 7 avril 2010 à 20:18
0
Merci
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++
Commenter la réponse de BruNews
cs_avg 97 Messages postés lundi 5 novembre 2007Date d'inscription 20 août 2011 Dernière intervention - 8 avril 2010 à 10:27
0
Merci
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
Commenter la réponse de cs_avg
cs_avg 97 Messages postés lundi 5 novembre 2007Date d'inscription 20 août 2011 Dernière intervention - 8 avril 2010 à 10:34
0
Merci
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++
Commenter la réponse de cs_avg
cs_avg 97 Messages postés lundi 5 novembre 2007Date d'inscription 20 août 2011 Dernière intervention - 8 avril 2010 à 11:13
0
Merci
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
Commenter la réponse de cs_avg

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.