Utilisation DLL win32 C++ ou C# dans dev-c++

Résolu
Tuxt Messages postés 4 Date d'inscription mardi 11 février 2003 Statut Membre Dernière intervention 8 décembre 2008 - 7 déc. 2008 à 20:38
Tuxt Messages postés 4 Date d'inscription mardi 11 février 2003 Statut Membre Dernière intervention 8 décembre 2008 - 8 déc. 2008 à 14:56
Bonjour à tous!

Je cherche depuis maintenant de nombreuses heures à utiliser avec dev-c++ une dll venant de de vs par interoperabilité.

Le but étant d'utiliser une dll en C# depuis dev-c++.
A ce que j'ai compris, Dev-c++ ne permet pas celà, même en passant par un COM. (car il ne gère pas les MFC)

La technique consisterais alors à créer une dll en c++ win32 sous visual studio, utilisant la fonction #IMPORT et l'interface de la dll C# pour en éxécuter son code. Le projet en executable fonctionne parfaitement, et utilise http://www.codeproject.com/KB/cs/ManagedCOM.aspx

Cependant, je ne parviens pas à utiliser cette DLL c++ win32 depuis dev-c++.

J'ai pourtant créé le .a venant du .lib avec reimp.exe / dlltool .exe, mais obtiens toujours à la compilation l'erreur:

  [Linker error] undefined reference to `_imp___ZN6MyClassC1Ev'

Merci par avance à celle/celui qui pourra m'indiquer le processus de création d'une dll win32 venant de visual c++ et utilisable par dev-c++ !

PS: étant novice en la matière, j'ai vu qu'il était possible de créer une static lib dans visual studio, générant un .lib au lieu d'une dll. Ce .lib serait-t-il utilisable par dev-c++ plus facilement qu'une DLL?

2 réponses

fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
8 déc. 2008 à 09:15
Salut,

pas évident de t'aider, mais on dirait que tu as fait le plus dur en faisant l'interface .NET -> Win32.
Tu as une erreur de link, donc je dirais que ça peut venir de l'export des fonctions de ta dll win32.
Avant de dire que tu n'arrives pas à l'intégrer à dev-c++, as-tu fait un programme de test avec Visual ?

Si tu ne l'as pas sur ton pc, téléchage depends, ca aide.
3
Tuxt Messages postés 4 Date d'inscription mardi 11 février 2003 Statut Membre Dernière intervention 8 décembre 2008
8 déc. 2008 à 14:56
Merci pour ta réponse!

Je suis finalement parvenue à faire ce que je voulais, tu avais raisons sur le problème de link.

Ceci étant ma première dll, je ne connaissais pas les déclarations extern de type:

dans la dll
extern "C" __declspec(dlliexport)void MaFonction();

dans le exe
extern "C" __declspec(dllimport)void MaFonction();

Ceux ayant ce genre de problème trouveront un bon exemple de déclaration de fonction dans les dll utilisable en externe ici:

http://2fwww.functionx.com/visualc/libraries/staticdll.htm

Et finalement, l'intégration par dev-c++ fût similaire à visual studio, avec en sus la création de ce fichier .a venant du .lib et généré par le couple d'outil reimp.exe / dlltool.exe

A bientôt!
0
Rejoignez-nous