Показать сообщение отдельно
  #1  
Старый 16.06.2008, 22:20
cavalera cavalera вне форума
Прохожий
 
Регистрация: 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(dllexportvoid FindContours(Graphics::TBitmap &bmpGraphics::TBitmap outputBmpint threshould1int threshould2); 
//--------------------------------------------------------------------------- 

#pragma argsused 
int WINAPI DllEntryPoint(HINSTANCE hinstunsigned long reasonvoidlpReserved

    return 
1

//--------------------------------------------------------------------------- 

void FindContours(Graphics::TBitmap &bmpGraphics::TBitmap outputBmpint threshould1int threshould2

    
IplImage *image TBitmapToIplImage(&bmp); 
    
IplImage *convertedImage cvCreateImagecvSize(image->widthimage->height), image->depth); 
    
cvSetImageCOIimage); 
    
cvCopyimageconvertedImage); 
    
cvCanny(convertedImageconvertedImagethreshould1threshould2); 
    
IplImageToTBitmap(convertedImage, &outputBmp); 


Программа использования функции
PHP код:
unit Main

interface 

uses 
  Windows
MessagesSysUtilsVariantsClassesGraphicsControlsForms
  
DialogsStdCtrlsExtCtrls

type 
  TForm1 
= class(TForm
    
Button1TButton
    
Image1TImage
    
procedure Button1Click(SenderTObject); 
  private 
    { Private 
declarations 
  public 
    { Public 
declarations 
  
end

var 
  
Form1TForm1

implementation 

procedure FindContours
(bmpoutputBmp TBitmapt1t2 integer); stdcallexternal 'OCVLib.dll' 

{$R *.dfm

procedure TForm1.Button1Click(SenderTObject); 
begin 
  FindContours
(Image1.Picture.BitmapImage1.Picture.Bitmap20050); 
end

end
Ответить с цитированием