Utilisation d'une Dll

kyfranBibax Messages postés 26 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 6 janvier 2008 - 1 juin 2005 à 16:49
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 3 juin 2005 à 22:25
Coucou,



J'ai un petit problème avec l'utilisation d'une dll (c++) que j'ai crée.

La dll se compile sans problème et j'ai une fonction que je peux utilisée.



Dans mon code c#, j'apelle bien ma Dll (une autre est apellé en même temps et tourne bien) mais lorque j'utilise la fonction,

une exception arrive :

System.NullReferenceException: Object reference not set to an instance of an object.

at RasterChart2BSB.RasterChart2bsb.GenPal(String fileInput, String fileOutput, Int32 colors)



Voici le code de l'apl :

GenPal("coucou","coucou",128); //les paramètres ne
correspondent à rien ici mais j'ai fait l'essai avec des bons



Mon problème est que je ne sais pas si cette exception est dûe à mon c# ou à mon code de Dll.

Si vous avez une idée sur ce petit problème...





Have a nice day





Bibax en fait un max





Pour info, une partie de ma dll :

.h

#define CREATEPAL_API __declspec(dllexport)



#include "stdafx.h"



//to export for C++ & C

#ifdef __cplusplus

extern "C"

{

#endif



// This class is exported from the CreatePal.dll

class CCreatePal {

public:

CCreatePal(CString strInput, CString strOutput, UINT nColors);

void GeneratePalette(CString strInput, CString strOutput, UINT nColors);

};



//exported function

CREATEPAL_API void GenPal(CString strInput, CString strOutput, UINT nColors);





.cpp

CREATEPAL_API void GenPal(CString strInput, CString strOutput, UINT nColors)

{

//create a CCreatePal Object

CCreatePal myCreatePal(strInput,strOutput,nColors);

myCreatePal.GeneratePalette(strInput,strOutput,nColors);

}

3 réponses

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
1 juin 2005 à 18:51
Salut,

J'avais pose la meme question ici mais aucune reponse helas..


Si tu as des fonctions "unmanaged" dans le constructeur essaye de les appeller en dehors du ctor..ca peut marcher, mais ca n'explique pas le probleme.. Si tu trouves la reponse ca m'interesse, a+
0
kyfranBibax Messages postés 26 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 6 janvier 2008
3 juin 2005 à 12:25
Coucou,



Tout d'abord, je dois t'avouer que mon NullReferenceException était
bien dûe à une non initialisation de variable(en fait init mais à
Null... et pas de valeur après...).



Mais avant d'avoir trouvé ce problème, je me suis aperçu que je ne
passais pas dans le constructeur, ni dans ma fonction
GeneratePalette(...) => vu que myCreatePal n'était pas crée, je
devais avoir un autre NullReferenceException.

C'est peut-être ce dernier qui t'intéresse.



En fait, les paramètres de mon prog c# était en string et ceux de ma
Dll en CString => pb de conversion dont tu ne peux te rendre compte.

J'ai donc passé les param de ma Dll en char* que je convertis ensuite en CString.



En espérant que cela peut t'aider.

Sinon, va sur le forum de cppfrance.com car il m'ont bien aidé. En fait c'était plus un pb de c++ que C#...



J'ai posté mon erreur là-bas et vas faire un tour, tu auras un peu plus de détails.
Merci de ton soutien en tout cas et bon courage.


Have a nice day



Bibax en fait un max
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
3 juin 2005 à 22:25
Ouaip, PInvoke et les chaines de caracteres c'est pas facile..

Thanks, a+
0
Rejoignez-nous