Bonjour à tous.
J'ai à utiliser dans mon application vb.net 2010 des fonctions contenues dans une dll en C++.
Voici le code de ma dll :
.cpp
Code c : 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 #include "stdafx.h" #include <stdlib.h> #include <stdio.h> #include "MARRE.h" namespace MARRE { int __clrcall MARRE::compareDoubles (const void *Y, const void *Z) { double y = *((double *)Y); double z = *((double *)Z); if (y > z) { return 1; } else { if (y < z) { return -1; } else { return 0; } } } }
.h
Code c : 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 #pragma once #include "windows.h" #include <iostream> using namespace std; using namespace System; namespace MARRE { public ref class MARRE { // TODO: ajoutez ici vos méthodes pour cette classe. public : int __clrcall compareDoubles (const void *Y, const void *Z); }; }
Lors de la compilation de la dll, tout se passe bien (à noter que j'ai essayé également d'utiliser __declspec (dllexport), de déplacer le public, d'enlever le ref etc).
J'enregistre alors dans mon projet vb.net cette dll. Le namespace apparait bien, la classe également, mais aucune fonction n'est disponible... on dirait qu'il ne connait pas ma fonction CompareDoubles...
J'ai utilisé comme logiciel "Dll Export Viewer", qui reconnait alors ma fonction et me la déclare publique ET exportée...
Suis-je obligée d'utiliser DllImport ou Déclare ? Je ne peux pas utiliser mon namespace comme n'importe quel autre namespace ? (la dll contiendra un bon nombre de fonctions)
Quelqu'un s'y connaissant en vb.net et c pourrait m'indiquer quelle option j'ai du oublier ?
Partager