DarckAnar
Messages postés4Date d'inscriptionmercredi 10 mars 2004StatutMembreDernière intervention 7 octobre 2004
-
6 oct. 2004 à 15:10
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014
-
7 oct. 2004 à 08:49
Bonjour,
J'importe une méthode d'une dll C++ dans un projet C#. La doc technique (C++) me fournit les types des 4 arguments. Au débugage j'ai une erreur du type : "La référence d'objet n'est pas définie à une instance d'un objet."
Je suis presque sur qu'il s'agit d'un type d'argument qui ne conviens pas ... un buffer audio qui est donné dans la doc comme (void*). J'ai essayé d'autres type genre byte[] etc ... sans success :sad) ...
J'aimerais pouvoir trouver un type de substitution au void* pour un buffer audio sans passer par du "unsafe" ... et de surcroix faire marcher cette méthode !
DarckAnar
Messages postés4Date d'inscriptionmercredi 10 mars 2004StatutMembreDernière intervention 7 octobre 2004 7 oct. 2004 à 01:11
Merci encore pour votre aide ...
Un ami à pu passer et la méthode 'Marche' ...
Il ne s'agissait pas du buffer :blush) ... byte[] convient très bien ... mais en fait le (unsigned long * u32NbrOfSamples) de la doc C++ ne trouvais pas son équivalent dans ( uint NbrOfSamples ) mais dans ( ref uint NbrOfSamples ) !!!
C'est la fête :big) ... Champagne pour tout le monde ... lol ...
DarckAnar
Messages postés4Date d'inscriptionmercredi 10 mars 2004StatutMembreDernière intervention 7 octobre 2004 6 oct. 2004 à 17:45
Dans le doute et au cas voici la doc pour cette méthode ...
Doc C++ :
Retour : function returns a buffer with the specified number of recorded samples in it. It also retrieves the Status of the audio in component
hAudioIn : Handle of the audio-in device
NbrOfSamples : (Input) The requested number of samples to be filled in the AudioBuffer. (Output) The actual number of recorded audio samples written in pAudioBuffer.
AudioBuffer : Buffer that contains the recorded samples (Output).
AudioInInfo : Information about the audio (Output)
struct AUDIOININFO {(une enum) eStatusInfo;unsigned long u32SamplesAvailable;};
long audioinGetSamples(void* hAudioIn, unsigned long * u32NbrOfSamples, void * AudioBuffer, AUDIOININFO * pAudioInInfo)
Mon code C# (safe) :
[DllImport("ma_dll_qui_me_soule.dll")]
public static extern int audioinGetSamples(IntPtr hAudioIn, uint NbrOfSamples, out InPtr AudioBuffer, out AUDIOININFO AudioInInfo);
--> l'erreur pour cette méthode après appel : "La référence d'objet n'est pas définie à une instance d'un objet." !
DarckAnar
Messages postés4Date d'inscriptionmercredi 10 mars 2004StatutMembreDernière intervention 7 octobre 2004 6 oct. 2004 à 20:21
- Je n'ai aucune idée de la forme des données qui seront placé dans AudioBuffer
- Je suis pas sur de comprendre ta question sur l'accessibilité de la dll ... j'importe les méthodes de cette dll dont j'ai besoin via [DllImport...] public static extern ...
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 7 oct. 2004 à 08:49
lol
je n'avais pas fait gaffe aux autres parametres
quand je parlais d'accessibilité (me rend compte que c'etait un peu tordu comme question) je parlais de la dll_qui_te_soulait.dll, savoir si je pouvais la recup quelquepart pour tester
mais comme tu as resolu ton prob ce n'est plus la peine lol