J'essaie d'exécuter mon application C#/C++ sous Linux après l'avoir développée sous Windows.Comment utiliser un module C++ à partir d'une application Mono
Une petite partie, FooLib, est écrite en C++ qui est pinvoked de C# pour la performance. FooLib n'utilise aucun appel système, seulement la fonctionnalité C++ standard. Il exporte une seule fonction, déclarée comme:
extern "C" __declspec(dllexport) void Foo(float*, int, float*);
Il est compilé avec Visual C++. J'ai essayé de lancer l'application en mono avec les fenêtres compilé FooLib.dll, mais le chargement dll (DllImport) a échoué avec:
Unhandled Exception: System.DllNotFoundException:Foo(single[2],int,single[])
Alors, que dois-je faire?
- Modifier la déclaration d'exportation d'une manière ou d'une autre?
- Compilez la chose dans une bibliothèque .so avec gcc sous Linux, puis chargez-la?
- Crosscompilez-le en .dll avec gcc sous Linux, puis chargez-le?
- Quelque chose d'autre?