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 :

[C#] Comment wrapper une dll ?


Sujet :

C++/CLI

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �clair�
    Avatar de Blo0d4x3
    Inscrit en
    Octobre 2003
    Messages
    593
    D�tails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 593
    Par d�faut [C#] Comment wrapper une dll ?
    Salut tous, je voudrais jouer du son dans mon application, je souhaiterais utiliser la fonction sndplaysound. Je fais donc :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public enum fuSound       
    		{
    			SND_SYNC = 0,
    			SND_ASYNC = 1,
    			SND_NODEFAULT = 2,
    			SND_MEMORY = 4,
    			SND_LOOP = 8
    		};
     
    [DllImport("winmm.dll")]
    public static extern bool sndPlaySound(string lpszSound, fuSound fuSound );
    J'apelle la fonction comme ceci:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    bool result = sndPlaySound("D:\\Sons\\ar3_pkup.wav", fuSound.SND_SYNC);
    Et ca me sort une execption me disant impossible de trouver le point d'entr� de la fonction sndplaysound dans winmm.dll.
    J'ai cette m�me erreur pour d'autre fonction comme playsound et mciExecute.
    Apr�s plusieurs recherches sur le net, je tombe toujours sur la m�me r�ponse comme quoi ces fonctions sont bien d�clar�es dans la dll winmm ou Coredll.dll(qui n'est pas pr�sente dans mon syst�me (Win XP)). . Je me trompe de dll ou ma d�claration est fausse?

    Merci.

  2. #2
    Membre exp�riment� Avatar de DeusXL
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    300
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 300
    Par d�faut
    J'avoue que je ne vois pas d'o� peut venir l'erreur... De ton PC s�rement parce que je viens de tester ce code :
    Code : 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    using System;
    using System.Text;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;
     
    namespace TestSon
    {
        class Program
        {
     
            public enum fuSound
            {
                SND_SYNC = 0,
                SND_ASYNC = 1,
                SND_NODEFAULT = 2,
                SND_MEMORY = 4,
                SND_LOOP = 8
            };
     
            [DllImport("winmm.dll")]
            public static extern bool sndPlaySound(string lpszSound, fuSound fuSound); 
     
            static void Main(string[] args)
            {
                sndPlaySound(@"C:\Documents and Settings\DeusXL\Mes documents\Visual Studio Projects\Doppler\boom.wav", 
                    fuSound.SND_SYNC); 
            }
        }
    }
    Et �a marche tr�s bien ! Essayes chez toi un nouveau projet avec �a pour voir.
    Pourrais-tu �tre plus pr�cis sur l'erreur � la limite ?
    ( quand elle arrive pr�cis�ment, quelle allure elle a... )

  3. #3
    Membre �clair�
    Avatar de Blo0d4x3
    Inscrit en
    Octobre 2003
    Messages
    593
    D�tails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 593
    Par d�faut
    Curieux....

    J'ai cr�� un projet avec une winform. Lorsque je clique sur un bouton sa apelle la methode snplaysound:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    private void button1_Click(object sender, System.EventArgs e)
    		{
    			try
    			{
    				//bool result = WinmmWrapper.mciExecute("play D:\\Sons\\ar3_pkup.wav");
    				bool result = WinmmWrapper.sndPlaySound("D:\\Sons\\ar3_pkup.wav", WinmmWrapper.fuSound.SND_ASYNC );
    				MessageBox.Show(result.ToString(), "essai", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    			}
    			catch(Exception ex)
    			{
    				MessageBox.Show(ex.Message, "essai", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    			}
    		}
    Et je tombe dans le catch. m'affichant que le point d'entr� de la fonction sndplaysound et introuvable. M�me erreur pour mciExecute.

    Mon fonction sont compil� dans un dll a par. J'ai bien sur ajouter les ref�rences dans ma winfom.
    Code : 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
     
    namespace WrappersWin32
    {
    	/// <summary>
    	/// Description résumée de Winmm.
    	/// </summary>
    	public class WinmmWrapper
    	{
    [DllImport("winmm.dll")]
    		public static extern bool sndPlaySound(string lpszSound, fuSound fuSound );
     
    [DllImport("winmm.dll")]
    		public static extern bool mciExecute (string lpstrcommand);
     
          }
    }

  4. #4
    Expert confirm�
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    D�tails du profil
    Informations personnelles :
    �ge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par d�faut
    je ne connais pas cette dll, n'ayant utilis� jusqu'alors que PlaySound
    voici un exemple simple:
    A Simple C# Class to Play .WAV Files in .NET

  5. #5
    Membre �clair�
    Avatar de Blo0d4x3
    Inscrit en
    Octobre 2003
    Messages
    593
    D�tails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 593
    Par d�faut
    Avec ton code ca marche! Et ma dll aussi!. En faite je pense que le probleme devait venir du faite que la form ou je fesai mes test �tait dans la m�me solution. Trop bizarre.

  6. #6
    Expert confirm�
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    D�tails du profil
    Informations personnelles :
    �ge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par d�faut
    alors

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

Discussions similaires

  1. R�ponses: 4
    Dernier message: 02/10/2005, 13h01
  2. Comment acc�der � une DLL COM depuis un ex�cutable ?
    Par Denys dans le forum API, COM et SDKs
    R�ponses: 10
    Dernier message: 20/09/2005, 08h04
  3. Comment ex�cuter une DLL ?
    Par chleuh dans le forum Langage
    R�ponses: 4
    Dernier message: 29/06/2005, 14h27
  4. Comment cr�er une dll Win32 sous Delphi ?
    Par Mickey.jet dans le forum Langage
    R�ponses: 8
    Dernier message: 16/06/2005, 15h38

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