IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++/CLI Discussion :

Acces Fonctions Dll


Sujet :

C++/CLI

  1. #1
    Membre �prouv� Avatar de Flow_75
    Femme Profil pro
    Ing�nieure
    Inscrit en
    Mai 2005
    Messages
    1 104
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 42
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 104
    Par d�faut Acces Fonctions Dll
    bonjour,

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    			HMODULE hdll = LoadLibrary(L"libvlc.dll");
    			FARPROC VlcMain;
    			if(!hdll)
    				Close();
     
    			VlcMain =GetProcAddress(hdll,"VLC_Version");
    J'ai ce code....
    Je connais le prototype de la fonction VLC_Version (char* VLC_Version(void)).
    Mais quand j'essaye de faire une assignation sur un label.
    ca me mets :

    error C2664: 'void System::Windows::Forms::Control::Text::set(System::String ^)' : impossible de convertir le param�tre 1 de 'int' en 'System::String ^'
    Donc je ne comprend pas du tout comme avoir le char* qui est normalement retourn�...



    Merci de votre aide.






    Sinon, si vous avez un tuto, site ou livre a me conseiller, n'h�sitez pas.

    Merci d'avance.

  2. #2
    Membre �prouv� Avatar de Flow_75
    Femme Profil pro
    Ing�nieure
    Inscrit en
    Mai 2005
    Messages
    1 104
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 42
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 104
    Par d�faut
    J'ai un code qui marche, maias cela me parait bien... compliqu�.
    voila le code :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	char*(*F)(void);
    ;
    			HMODULE hDll = LoadLibrary(L"libvlc.dll");
     
    			if(!hDll)
    				Close();
     
    			F=reinterpret_cast<char*(*)(void)>(GetProcAddress(hDll,"VLC_Version"));
     
    			label1->Text =gcnew String(F());
    SI vous savez comment le simplifier.... merci d'avance.

  3. #3
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    y a peut-etre moyen de simplifier l'appel � la dll, mais pour l'assignation au label, tu ne peux pas faire autrement.

  4. #4
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 398
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 398
    Par d�faut
    En effet, on ne peut pas vraiment faire plus simple.
    Mais on peut utiliser un typedef pour le type de pointeur de fonction, ce qui rend d�j� plus lisible:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    typedef char const * VLC_VERSION_PROC;
    Exemple:
    Code C++/CLI : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    typedef char const * VLC_VERSION_PROC;
     
    bool SetLabel1ToVlcVersion(void)
    {
    	VLC_VERSION_PROC verProc = nullptr;
    	//FBT: L s'utilise avec la version W des fonctions, _T() avec la version TCHAR
    	HMODULE hDll = LoadLibrary(_T("libvlc.dll"));
    	if(hDll == nullptr)
    		return false;
     
    	FARPROC proc = GetProcAddress(hDll, "VLC_Version");
    	verProc = reinterpret_cast< VLC_VERSION_PROC >(proc);
     
    	label1->Text = gcnew String(verProc());
    	//FBT: Oubli de FreeLibrary() si hDll n'est pas mémorisé.
    	FreeLibrary(hDll);
    	return true;
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre �prouv� Avatar de Flow_75
    Femme Profil pro
    Ing�nieure
    Inscrit en
    Mai 2005
    Messages
    1 104
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 42
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 104
    Par d�faut
    merci de votre aide, ca marche.

    derniere question concernant ce sujet.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    char *path;
    HMODULE hdll;
     
    /* Initialisation de path (qui contient le chemin de la dll)*/
     
    hdll = LoadLibrary(path); /* ici le probleme */
    lors de la compilation ca me met probleme avec le char non convertible en LPCWSTR.
    mais je ne peux ni mettre
    ni
    voila, comment r�soudre ?
    Merci de votre aide.

  6. #6
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    declare ton char en TCHAR
    et utilise la macro TEXT pour tes chaines de caract�res

  7. #7
    Membre �prouv� Avatar de Flow_75
    Femme Profil pro
    Ing�nieure
    Inscrit en
    Mai 2005
    Messages
    1 104
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 42
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 104
    Par d�faut
    c'est parfait merci beaucoup ! --> Resolu

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Violation d'acc�s apr�s appel d'une fonction DLL
    Par colorid dans le forum Langage
    R�ponses: 9
    Dernier message: 12/06/2013, 12h15
  2. Acc�s � une dll externe
    Par syrio dans le forum C++
    R�ponses: 5
    Dernier message: 07/04/2006, 23h23
  3. [AS2] Pb acc�s fonctions statiques
    Par wwave dans le forum ActionScript 1 & ActionScript 2
    R�ponses: 1
    Dernier message: 08/02/2006, 14h18
  4. [PowerBuilder] Fonction DLL en dynamique
    Par deltar dans le forum Powerbuilder
    R�ponses: 1
    Dernier message: 30/01/2006, 14h25
  5. Appels fonctions DLL
    Par Micka91 dans le forum Autres �diteurs
    R�ponses: 1
    Dernier message: 17/02/2004, 17h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo