Interop C / C#

darknoon29 Messages postés 17 Date d'inscription mercredi 10 novembre 2004 Statut Membre Dernière intervention 10 juin 2005 - 7 juin 2005 à 22:50
darknoon29 Messages postés 17 Date d'inscription mercredi 10 novembre 2004 Statut Membre Dernière intervention 10 juin 2005 - 10 juin 2005 à 10:23
Nous avons un problème avec une dll.

En fait, nous avons testé notre dll en la compilant en .exe: nous avons constaté que tout fonctionnait.

0 | 2

1 | 2

2 | 1

3 | 1

4 | 0

Nb Violations : 2



Mais lors de l'appel de la dll dans notre programme (appelé dans l'IHM
en C#), le fichier de sortie nous indiquait des choses du style :

0 | -842150451

1 | -842150451

2 | -842150451

3 | -842150451

4 | -842150451



Nombre de violations : -858993460



Sachant que tout le traitement se fait dans la dll... On n'a rien compris...



Morceaux de code:

en C#:

[DllImport("ordonantsdll.dll")] static extern int dialogue(string numfichier,int NbVoiture,int NbOptions,int NbClasses);

Appel:

erreur = dialogue(numfichier, NbVoiture, NbOptions, NbClasses);

en C:





FILE* FichierCree=NULL;

char NomFich[27];



sprintf(NomFich,"data//CSout");

strcat(NomFich,TmpStr);

sprintf(TmpStr,".txt");

strcat(NomFich,TmpStr);



FichierCree=fopen(NomFich,"w");



if(FichierCree==NULL)

{


printf("\n Erreur
d'écriture dans le fichier\n");

}

else

{

fprintf(FichierCree,"Numero Voiture | Classe\n");

for(i=0;i<NbVoiture;i++)

{

fprintf(FichierCree,"\t\t%d\t\t|\t ", i);

fprintf(FichierCree,"%d \n",tabseq[1][i]);

}

fprintf(FichierCree,"\nNombre de violations : %d",NbViolation);

fprintf(FichierCree,"\n\n(c) Ordonants project");

}

fclose(FichierCree);

}



et

_declspec( dllexport)int dialogue (char NumFichier[], int NbVoiture,int NbOptions,int NbClasses)

{



Si vous avez besoin d'info, envoyez moi un mail !

8 réponses

darknoon29 Messages postés 17 Date d'inscription mercredi 10 novembre 2004 Statut Membre Dernière intervention 10 juin 2005
7 juin 2005 à 23:42
Z'êtes pas cool les gars on galère là... Vous auriez pas une idée siouplééé ?
0
darknoon29 Messages postés 17 Date d'inscription mercredi 10 novembre 2004 Statut Membre Dernière intervention 10 juin 2005
7 juin 2005 à 23:51
un truc bizarre c'est toujours les memes valeurs meme si elles sont archifausses qui ressortent dans le fichier de sortie...
0
darknoon29 Messages postés 17 Date d'inscription mercredi 10 novembre 2004 Statut Membre Dernière intervention 10 juin 2005
7 juin 2005 à 23:54
est ce que le fait de lancer notre programme c a partir d'une IHM c#
pourrait faire en sorte que les doubles pointeurs ne sont plus acceptés
dans le prog C ?

apparemment c'est ce qui se passe
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
8 juin 2005 à 07:23
Salut,

Si ces valeurs ne sont utilisées qu'en interne il n'y a pas de raisons que l'interop soit la raison du problème.
Par contre si il y a une quelconque interaction avec les paramètres il faudrais peut etre que tu verifies leurs valeurs justement, dans la méthode exposée du code C lors de son appel.

Cocoricoooooooo !!!!
coq
MVP Visual C#
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
8 juin 2005 à 07:35
Moi je veux bien (en ce qui concerne le sujet du message)

[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
8 juin 2005 à 07:59
Ah oui à ce propos donne nous donc un titre plus parlant sur le sujet, parce que je ne suis pas sur que ça soit très parlant pour ceux qui n'ont pas lu l'autre post ^^

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
8 juin 2005 à 13:18
Mais de toute facon c'est bien ton programme C# qui envoie des donnees a ta lib en C, hein ? C'est surement la qui a un probleme.. Peut etre que qlq part tu envoies une adresse ou lieu d'envoyer une valeur !? ou alors un mauvais cast, genre un int en uint ?
0
darknoon29 Messages postés 17 Date d'inscription mercredi 10 novembre 2004 Statut Membre Dernière intervention 10 juin 2005
10 juin 2005 à 10:23
Ce n'est pas ça : j'ai vérifié que j'avais bien envoyé la bonne donnée en mode debug.



PS Merci à coq pour avoir changé le nom du post !
0
Rejoignez-nous