Bonjour,

Je fait mon premier projet avec une DLL C++, une interface C#, et un wrapper C++/CLI entre les deux.

Pour l'instant, j'essaie simplement d'exécuter une fonction de la lib C++ native depuis le C#:

Voici la DLL C++
.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
#include <iostream>
#include <string>
namespace ExportCSVDLL {
	 __declspec(dllexport) int exportCSV(int a);
}
.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
#include "ExportCSV.h";
int ExportCSVDLL::exportCSV(int a) {
	return 0;
}
LeWrapper en C++/CLI
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
#pragma once
#include <string>
#include <iostream>
#include <vector>
 
#include "ExportCSV.h"
 
using namespace System;
 
namespace ExportWrapper {
	public ref class ExportW
	{
		int doExportCSV(int a);
	};
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
#include "stdafx.h"
#include "ExportWrapper.h"
 
using namespace ExportCSVDLL;
using namespace System::IO;
 
namespace ExportWrapper {
	int ExportW::doExportCSV(int a) {
		return exportCSV(a);
	}
}
Et l'appel en C#
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
            // Instance sur wrapper
 
            ExportWrapper.ExportW export = new ExportWrapper.ExportW();// Export avec DLL C++ en par le wrapper
 
            int ret = export.doExportCSV(1);
Le tout compile sans problème.

Quand je fais appelle a doExportCSV dans le C#, j'ai un exception SEHException dans le Wrapper à l'appelle de la fonction de la DLL.

J'ai suivi le TUTO :
http://ensiwiki.ensimag.fr/index.php...en_C%2B%2B/CLI
Mais j'ai toujours l'exception. J'ai forcement fait une boulette, mais je ne trouve pas ou.

Un petit coup de main ?