Bonjour,

Je suis actuellement en train de développer une application c# qui demande une SDK (fbx) écrit en C++, j'ai donc créé plusieurs projets :

- un projet c# wpf pour l'interface utilisateur et la gestion de l'application
- un projet C++/CLI pour lier le code c# avec une classe C++ native
- un projet C++ natif utilisant la librairie FBX.

Avec des types simples (liste de int, double, même de classe custom), le passage de C# à C++ se déroule très bien.

Les problèmes arrivent avec une DLL C# connue à la fois par mon application C# et le wrapper C++/CLI.

Du coté de l'importation de la DLL dans la partie C#, aucun problème.
Pour la partie C++/CLI, après ajout de référence vers la dll et utilisation de

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
#using <CsharpDLL.dll>
using namespace csharpdllnamespace
Je peux utiliser les types définis dans la DLL au sein du projet C++/CLI, le compilateur ne râle pas.

Cependant, je ne peux pas appeler une fonction C++/CLI utilisant un type de la DLL C# dans l'application C#

Code d'exemple :

DLL C# : classe 'Mesh'

Fichier C++/CLI.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
void wExportFBX(String^FileName, Mesh pMesh);
Fichier C++/CLI.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
void wExportFBX(String ^FileName,Mesh pMesh)
{
    pMesh.AddVertex(...);
}
Fichier C#
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
wrapper.wExportFBX("File Name", MyMesh);
Compilateur :
"wExportFBX" is not supported by the language.

Comment faire en sorte que mon projet C# & mon projet C++/CLI utilisent tout deux ma dll et puissent se passer des objets sans tout avoir à recoder ?

d'avance merci, j'espère que mes explications ne sont pas trop floues.