Bonjour à vous tous,
Je dispose d'une dll qui charge et affiche une image grâce à la bibliothèque OpenCV2.4. Cependant, ma vraie dll fait beaucoup plus de choses, je vous rassure: j'ai juste voulu commencer avec quelque chose de simple.
Cette dll a été faite en C++ sous Visual Studio 2008.
Elle a été testée avec un petit projet sous Visual Studio: cela fonctionne très bien.
J'ai utilisé Dependency Walker pour analyser ma dll: je n'ai pas d'erreur et je peux ainsi récupérer l'Alias de ma fonction.
Maintenant, je cherche à charger cette dll sous VB 2008.
J'ai placé ma dll et celles utilisées par ma dll ( Cf .cpp ) dans le répertoire du projet VB et c'est tout ( il se peut que j'ai déjà faux ).
Voici .cpp
Je n'agis pas sur value, mais je cherche juste à voir si je peux faire passer une valeur dans ma fonction.
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 #pragma once #pragma comment ( lib, "opencv_core240.lib" ) #pragma comment ( lib, "opencv_highgui240.lib" ) #pragma comment ( lib, "opencv_imgproc240.lib" ) #include <iostream> #include <stdio.h> #include "opencv/cv.h" #include "opencv/highgui.h" __declspec(dllexport) int __stdcall loadImage( int value ) { cv::Mat img; img = cv::imread( "Image.tif" ); if( !img.data ) { std::cout<<"Error: could not open the image!"<<std::endl; } else { cv::namedWindow( "Image", CV_GUI_NORMAL ); cv::imshow( "Image", img ); std::cout<<"End"<<std::endl; } cv::waitKey(); return value; }
Voilà mon .def
J'ai lu plusieurs pages pour résoudre mon problème et j'ai donc appris qu'il fallait ajouter un fichier .def.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 LIBRARY loadImage EXPORTS loadImage = ?loadImage@@YGHH@Z
Mon coe sous VB 2008 ( je ne connais rien en VB 2008: on m'a juste passé un bout de code. Mon objectif est uniquement de faire tourner le prog VB )
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 Option Strict Off Option Explicit On Friend Class FrmMain Inherits System.Windows.Forms.Form Declare Function loadImage Lib "loadImage.dll" Alias "loadImage" (ByVal value As Integer) As Integer Private Sub CmdGO_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles CmdGO.Click On Error GoTo CmdGO_Click_err LblResult.Text = loadImage(5) LblResult.ForeColor = System.Drawing.Color.Lime Exit Sub CmdGO_Click_err: LblResult.Text = Err.Description LblResult.ForeColor = System.Drawing.Color.Red End Sub Private Sub LblResult_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LblResult.Click End Sub End Class
Cependant, une erreur apparaît
"Impossible de trouver le point d'entrée "loadImage" dans la DLL "loadImage.dll""
Pouvez-vous m'aider à résoudre ce problème?
N'hésitez pas à me demander des précisions!
Merci d'avance
Partager