Bonjour,
Je cherche à appeler une DLL en C# depuis un exécutable fortran.
Pour se faire, j'utilise un code C++/CLI, avec une partie managée et une partie non managée, comme interface.
J'ai d'abord créé un exécutable, avec une fonction main non managée, pour tester le bon fonctionnement du logiciel, et cela a marché correctement.
Par contre, lorsque je compile le code comme une DLL, et que je l'appelle depuis un exécutable fortran, le code s'arrête au niveau de l'appel de le fonction manage.
Je en comprend pas pourquoi.
Voici le code incrimine
Et le code C#
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 void DllExport CREERXML(char* NOM_XTMP) { char interXtmp[512]; string nom_fich_XTMP; // ici se trouve la conversion de char en string, avec /0 comme charactere //de fin nom_fich_XTMP = interXtmp; //passage dans la partie manage CREERXMLmanage(nom_fich_XTMP); } #pragma managed (push,on) //appel de le dll C# void CREERXMLmanage(string nomFichier) { //conversion du string en String^ String ^ nomFichierManage = gcnew String(nomFichier.c_str()); //appel de la fonction C# proprement dite remplirSbael::miseEnPlaceSortie(nomFichierManage); }
Merci d'avance pour votre aide
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 namespace ecrireXML { /// <summary> /// Classe principale /// </summary> public static class remplirSbael { /// <summary> /// La fonction principale /// </summary> /// <returns></returns> public static void miseEnPlaceSortie(string args) { //ici, le code en C# faisant le traitement que je dois effectuer }
Partager