線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2189
推到 Plurk!
推到 Facebook!

BCB 使用 DLL 發生錯誤(他人電腦上)

尚未結案
honoyang
一般會員


發表:1
回覆:0
積分:0
註冊:2009-01-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-01-21 12:25:51 IP:140.112.xxx.xxx 訂閱
大家好

這幾天我一直在解決一個DLL的問題

事實上我對DLL的了解並不深

只能做簡易的編寫

而且初步來看是可以run的

只是當用在BCB 上時,在別人電腦無法開啓。

實在是研究了兩三天,大概發現問題是在哪,想請大家幫我一下
=====================================================================

我用Visual studio 2005先編寫一個使用了OPENCV的程式
接著將它做成DLL檔由BCB使用

結果在我的電腦上可以run但換了台電腦就不行了

於是我也用Visual studio 2005寫了呼叫此DLL的程式

這次兩台電腦都可以了。

經過測試後,發現將SIFT() 中有使用到的函式全拿掉

別人用BCB就可以run了,

所以我現在不知道到底問題出在DLL的製作發生錯誤還是BCB沒有設定好

目前是比較偏向懷疑BCB,

有沒有可能是路徑發生問題

想請各位幫幫忙

祝大家新年快樂

謝謝

[code cpp]
#include ".\OpenCv_header\cv_include\cv.h"
#include ".\OpenCv_header\cxcore_include\cxcore.h"
#include ".\OpenCv_header\higui_include\highgui.h"
#include "sift.h"
#include "imgfeatures.h"
#include "utils.h"
#include "kdtree.h"

#include "fstream"
//主函式
void SIFT()
{

ifstream infile("img.txt",ios::in);
ofstream xfile("x.txt",ios::out);
ofstream yfile("y.txt",ios::out);
ofstream total("t.txt",ios::out);
char img1_file_name[100] ;
char img2_file_name[100] ;

infile>>img1_file_name>>img2_file_name;
IplImage * tImg1 = cvLoadImage( img1_file_name, 1);
IplImage * tImg2 = cvLoadImage( img2_file_name, 1);
IplImage * tImg1and2 = stack_imgs( tImg1, tImg2 );
cvSaveImage("orif.bmp",tImg1);
cvSaveImage("oris.bmp",tImg2);
/*- find sift feature -*/
feature * feat1, * feat2;
cout<<"Processing "< int featN1 = sift_features( tImg1, &feat1 );
cout<<"Processing "< int featN2 = sift_features( tImg2, &feat2 );
/*- kdtree -*/
struct kd_node* kd_root = kdtree_build( feat2, featN2 );
/*- match -*/
int k, m=0;
double d0, d1;
feature * feat, **nbrs;
CvPoint pt1, pt2;
for( int i = 0; i < featN1; i )
{
feat = feat1 i;
k = kdtree_bbf_knn( kd_root, feat, 2, &nbrs, KDTREE_BBF_MAX_NN_CHKS );
if( k == 2 )
{
d0 = descr_dist_sq( feat, nbrs[0] );
d1 = descr_dist_sq( feat, nbrs[1] );
if( d0 < d1 * NN_SQ_DIST_RATIO_THR )
{
m ;
pt1 = cvPoint( cvRound( feat->x ), cvRound( feat->y ) );
pt2 = cvPoint( cvRound( nbrs[0]->x ), cvRound( nbrs[0]->y ) );

xfile< yfile< pt2.y = tImg1->height;
cvLine( tImg1and2, pt1, pt2, CV_RGB(255,0,255), 1, 8, 0 );
feat1[i].fwd_match = nbrs[0];
}
}
free( nbrs );
}
total< cout<<"n: "< cvNamedWindow("sun");
cvShowImage("sun",tImg1and2);
cvSaveImage("SIFT.bmp",tImg1and2);
cvWaitKey(0);
}


[code cpp]
//.h檔內容

#ifndef __REDLL_H__
#define __REDLL_H__
#define REDLL_API __declspec(dllexport)
extern "C"
{
REDLL_API void SIFT();
}
#endif // _REDLL_H__

[/code]

[/code]
ikk
尊榮會員


發表:4
回覆:413
積分:768
註冊:2003-06-30

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-01-23 08:48:37 IP:163.28.xxx.xxx 訂閱
應該是在Visual studio 2005裡面產生DLL時, 出現問題吧...
某個library未使用static link...
------
FPGA驗證, FPGA開發平台, http://smims.com
系統時間:2024-04-27 3:02:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!