Bonjour,
Je tente d'utiliser swig pour wrapper en csharp une dll que j'ai faite en c++.
Pour l'instant je suis complètement newbie dans le domaine.
L'instanciation des templates les plus simples est assez facile , mais quand le paramètre template est un template, ça semble être plus dur. Par exemple, si j'essaie un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
std::vector<std::vector<double> >;
comme dans ce fichier.i :
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
27
28
29
30
31
32
33
34
35
36
37
38
39
 
#ifndef WRAPPER_SWIG_I
# define WRAPPER_SWIG_I
 
%rename(Eval) operator();
 
%module Swig
 
%include "cpointer.i"
%pointer_class(int, intPointer);
%pointer_class(double, doublePointer);
 
%include "carrays.i"
%array_class(int, intArray);
%array_class(double, doubleArray);
 
// LA STL
%include std_string.i
%include std_map.i
%include std_vector.i
namespace std
{
%template(StdVectorInt) vector<int>;
%template(StdVectorUInt) vector<unsigned int>;
%template(StdVectorDouble) vector<double>;
%template(StdVectorBool) vector<bool>;
%template(StdVectorVectorDouble) vector<vector<double> >;
}
 
// First section:
%{ 
	#include "dllC.h"
%}
// Second section:	
%include <windows.i>
#define DLL_INTERFACE	
 
%include "dllC.h"	
#endif
La commande swig se passe plutot bien, mais c'est le fichier StdVectorVectorDouble.cs généré qui ne marche pas : j'ai le message suivant : "Alias 'std' not found" à la compilation.
En effet celui-ci contient des fonctions ayant pour type de retour std::vector< double > qui n'est évidemment pas un type pour c#.

Comme je suis complètement nouveau sur swig, j'imagine que mon message manque de détail !
Anybody has an idea ?

S.