Chargement d'une Dll C++ sur VB 2008
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
Code:
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;
} |
Je n'agis pas sur value, mais je cherche juste à voir si je peux faire passer une valeur dans ma fonction.
Voilà mon .def
Code:
1 2 3
| LIBRARY loadImage
EXPORTS
loadImage = ?loadImage@@YGHH@Z |
J'ai lu plusieurs pages pour résoudre mon problème et j'ai donc appris qu'il fallait ajouter un fichier .def.
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:
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