
16.06.2008, 22:20
|
Прохожий
|
|
Регистрация: 16.06.2008
Сообщения: 3
Репутация: 10
|
|
Как использовать функцию написанную в C++ Builder в Delphi.
Такая ситуация: пишу программу на Дельфи. Для этой проги мне понадобились алгоритмы обработки изображений, для этого я нашёл OpenCV для C++ Builder. Я написал нужный код на C++ Builder, думая что можно будет потом загрузить эту функцию из dll, но почему-то она не загружается оттуда, выдаёт ошибку, что точка входа в процедуру не найдена (код dll и использования в Delphi приведены ниже). Можете посоветовать как решить эту проблему.
Код длл
PHP код:
//---------------------------------------------------------------------------
#include <vcl.h>
#include <windows.h>
#include <vcl.h>
#include <cv.h>
#include <highgui.h>
#include <IplConverter.h>
#pragma hdrstop
extern "C" __declspec(dllexport) void FindContours(Graphics::TBitmap &bmp, Graphics::TBitmap outputBmp, int threshould1, int threshould2);
//---------------------------------------------------------------------------
#pragma argsused
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
return 1;
}
//---------------------------------------------------------------------------
void FindContours(Graphics::TBitmap &bmp, Graphics::TBitmap outputBmp, int threshould1, int threshould2)
{
IplImage *image = TBitmapToIplImage(&bmp);
IplImage *convertedImage = cvCreateImage( cvSize(image->width, image->height), image->depth, 1 );
cvSetImageCOI( image, 2 );
cvCopy( image, convertedImage, 0 );
cvCanny(convertedImage, convertedImage, threshould1, threshould2, 3 );
IplImageToTBitmap(convertedImage, &outputBmp);
}
Программа использования функции
PHP код:
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Image1: TImage;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
procedure FindContours(bmp, outputBmp : TBitmap; t1, t2 : integer); stdcall; external 'OCVLib.dll'
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
FindContours(Image1.Picture.Bitmap, Image1.Picture.Bitmap, 200, 50);
end;
end.
|