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

利用BCB呼叫VC寫的DLL

尚未結案
akino0910
一般會員


發表:34
回覆:52
積分:16
註冊:2005-09-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-01-22 00:15:07 IP:122.120.xxx.xxx 訂閱
請問各位大大
小弟有參考過http://delphi.ktop.com.tw/board.php?cid=168&fid=923&tid=33420
的文章寫法~~將RaynorPao大大的說法依樣畫葫蘆的寫了成功執行的程式

現在我要將之前學長用VC寫的DLL呼叫出來...依照相同的寫法..卻始終會出現
[Linker Error] Unresolved external 'CDspII::Process(int *, float *, float *)' referenced from C:\BCBSTA\UNIT1.OBJ
這樣的錯誤訊息><
不知道各位前輩能否告知~~小弟呼叫DLL是哪邊出了問題?
我將學長程式的.h檔寫上來..再將我用BCB呼叫DLL的程式寫上~~希望各位大大能幫小弟解惑
.h檔程式

class __declspec(dllimport) CDspII
{
public:
CDspII(){};
virtual ~CDspII(){};
BOOL Process(int* Data,float* Header,float* ECG);
protected:
int GetPeakPos(int *Position);
};

BCB的button程式
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float Header[8];
float ECG[3750];
int input[3750];
TStringList *sl=new TStringList;
sl->LoadFromFile("1.txt");//把檔案內容抓到sl
for (int i =0;i<3750; i )
{
IntToStr(input[i])=sl->Strings[i];
}
delete sl;
ShowMessage(IntToStr(AddMethodEx(1,1)));
CDspII *pDspII;
pDspII = new CDspII();
pDspII->Process(input,Header,ECG);

}
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-01-22 03:28:58 IP:61.64.xxx.xxx 訂閱
你可能要弄清楚,你要使用的是

1. *.h *.lib
還是
2.自訂宣告(Implicit or explicit) *.DLL

===================引 用 akino0910 文 章===================
請問各位大大
小弟有參考過http://delphi.ktop.com.tw/board.php?cid=168&fid=923&tid=33420
的文章寫法~~將RaynorPao大大的說法依樣畫葫蘆的寫了成功執行的程式

現在我要將之前學長用VC寫的DLL呼叫出來...依照相同的寫法..卻始終會出現
[Linker Error] Unresolved external 'CDspII::Process(int *, float *, float *)' referenced from C:\BCBSTA\UNIT1.OBJ
這樣的錯誤訊息><
不知道各位前輩能否告知~~小弟呼叫DLL是哪邊出了問題?
我將學長程式的.h檔寫上來..再將我用BCB呼叫DLL的程式寫上~~希望各位大大能幫小弟解惑
.h檔程式

class __declspec(dllimport) CDspII
{
public:
CDspII(){};
virtual ~CDspII(){};
BOOL Process(int* Data,float* Header,float* ECG);
protected:
int GetPeakPos(int *Position);
};

BCB的button程式
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float Header[8];
float ECG[3750];
int input[3750];
TStringList *sl=new TStringList;
sl->LoadFromFile("1.txt");//把檔案內容抓到sl
for (int i =0;i<3750; i )
{
IntToStr(input[i])=sl->Strings[i];
}
delete sl;
ShowMessage(IntToStr(AddMethodEx(1,1)));
CDspII *pDspII;
pDspII = new CDspII();
pDspII->Process(input,Header,ECG);

}
akino0910
一般會員


發表:34
回覆:52
積分:16
註冊:2005-09-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-01-22 09:32:05 IP:220.128.xxx.xxx 訂閱
感謝syntax大大的回覆
小弟昨天才開始接觸DLL的東西...學長去當兵了~~
他只留下DLL跟.h檔給我...
我不太懂大大說的意思><
以下兩種使用跟我引用RaynorPao大大個說法有什麼差別?

===================引 用 syntax 文 章===================
你可能要弄清楚,你要使用的是

1. *.h *.lib
還是
2.自訂宣告(Implicit or explicit) *.DLL

===================引 用 akino0910 文 章===================
請問各位大大
小弟有參考過http://delphi.ktop.com.tw/board.php?cid=168&fid=923&tid=33420
的文章寫法~~將RaynorPao大大的說法依樣畫葫蘆的寫了成功執行的程式

現在我要將之前學長用VC寫的DLL呼叫出來...依照相同的寫法..卻始終會出現
[Linker Error] Unresolved external 'CDspII::Process(int *, float *, float *)' referenced from C:\BCBSTA\UNIT1.OBJ
這樣的錯誤訊息><
不知道各位前輩能否告知~~小弟呼叫DLL是哪邊出了問題?
我將學長程式的.h檔寫上來..再將我用BCB呼叫DLL的程式寫上~~希望各位大大能幫小弟解惑
.h檔程式

class __declspec(dllimport) CDspII
{
public:
CDspII(){};
virtual ~CDspII(){};
BOOL Process(int* Data,float* Header,float* ECG);
protected:
int GetPeakPos(int *Position);
};

BCB的button程式
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float Header[8];
float ECG[3750];
int input[3750];
TStringList *sl=new TStringList;
sl->LoadFromFile("1.txt");//把檔案內容抓到sl
for (int i =0;i<3750; i )
{
IntToStr(input[i])=sl->Strings[i];
}
delete sl;
ShowMessage(IntToStr(AddMethodEx(1,1)));
CDspII *pDspII;
pDspII = new CDspII();
pDspII->Process(input,Header,ECG);

}
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-01-22 15:18:17 IP:61.64.xxx.xxx 訂閱
如果你只有 DLL,那你就不會用到 *.h
1. 使用 explicit
直接在你的程式內定義 xxxx function xxxxxxxx.... "yyyy.DLL"
2. 使用 implicit
呼叫 LoadLibrary GetProcAddress

===================引 用 akino0910 文 章===================
感謝syntax大大的回覆
小弟昨天才開始接觸DLL的東西...學長去當兵了~~
他只留下DLL跟.h檔給我...
我不太懂大大說的意思><
以下兩種使用跟我引用RaynorPao大大個說法有什麼差別?

===================引 用 syntax 文 章===================
你可能要弄清楚,你要使用的是

1. *.h *.lib
還是
2.自訂宣告(Implicit or explicit) *.DLL

===================引 用 akino0910 文 章===================
請問各位大大
小弟有參考過http://delphi.ktop.com.tw/board.php?cid=168&fid=923&tid=33420
的文章寫法~~將RaynorPao大大的說法依樣畫葫蘆的寫了成功執行的程式

現在我要將之前學長用VC寫的DLL呼叫出來...依照相同的寫法..卻始終會出現
[Linker Error] Unresolved external 'CDspII::Process(int *, float *, float *)' referenced from C:\BCBSTA\UNIT1.OBJ
這樣的錯誤訊息><
不知道各位前輩能否告知~~小弟呼叫DLL是哪邊出了問題?
我將學長程式的.h檔寫上來..再將我用BCB呼叫DLL的程式寫上~~希望各位大大能幫小弟解惑
.h檔程式

class __declspec(dllimport) CDspII
{
public:
CDspII(){};
virtual ~CDspII(){};
BOOL Process(int* Data,float* Header,float* ECG);
protected:
int GetPeakPos(int *Position);
};

BCB的button程式
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float Header[8];
float ECG[3750];
int input[3750];
TStringList *sl=new TStringList;
sl->LoadFromFile("1.txt");//把檔案內容抓到sl
for (int i =0;i<3750; i )
{
IntToStr(input[i])=sl->Strings[i];
}
delete sl;
ShowMessage(IntToStr(AddMethodEx(1,1)));
CDspII *pDspII;
pDspII = new CDspII();
pDspII->Process(input,Header,ECG);

}
akino0910
一般會員


發表:34
回覆:52
積分:16
註冊:2005-09-30

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-01-23 14:06:31 IP:220.128.xxx.xxx 訂閱
不知道大大說的是不是RaynorPao大大文章說的動態連結...
我有從版中看到有人跟我有相似的問題
http://delphi.ktop.com.tw/board.php?cid=168&fid=920&tid=89695
我將他的程式下載下來...然後依照RaynorPao大大文章說名作修改之後...確實是能夠執行
可是我載入我的DLL跟.h檔卻始終跑出相同的錯誤訊息...
是因為我DLL適用C 寫的關係嗎?
還是哪個環節出了問題...
===================引 用 syntax 文 章===================
如果你只有 DLL,那你就不會用到 *.h
1. 使用 explicit
直接在你的程式內定義 xxxx function xxxxxxxx.... "yyyy.DLL"
2. 使用 implicit
呼叫 LoadLibrary GetProcAddress

===================引 用 akino0910 文 章===================
感謝syntax大大的回覆
小弟昨天才開始接觸DLL的東西...學長去當兵了~~
他只留下DLL跟.h檔給我...
我不太懂大大說的意思><
以下兩種使用跟我引用RaynorPao大大個說法有什麼差別?

===================引 用 syntax 文 章===================
你可能要弄清楚,你要使用的是

1. *.h *.lib
還是
2.自訂宣告(Implicit or explicit) *.DLL

===================引 用 akino0910 文 章===================
請問各位大大
小弟有參考過http://delphi.ktop.com.tw/board.php?cid=168&fid=923&tid=33420
的文章寫法~~將RaynorPao大大的說法依樣畫葫蘆的寫了成功執行的程式

現在我要將之前學長用VC寫的DLL呼叫出來...依照相同的寫法..卻始終會出現
[Linker Error] Unresolved external 'CDspII::Process(int *, float *, float *)' referenced from C:\BCBSTA\UNIT1.OBJ
這樣的錯誤訊息><
不知道各位前輩能否告知~~小弟呼叫DLL是哪邊出了問題?
我將學長程式的.h檔寫上來..再將我用BCB呼叫DLL的程式寫上~~希望各位大大能幫小弟解惑
.h檔程式

class __declspec(dllimport) CDspII
{
public:
CDspII(){};
virtual ~CDspII(){};
BOOL Process(int* Data,float* Header,float* ECG);
protected:
int GetPeakPos(int *Position);
};

BCB的button程式
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float Header[8];
float ECG[3750];
int input[3750];
TStringList *sl=new TStringList;
sl->LoadFromFile("1.txt");//把檔案內容抓到sl
for (int i =0;i<3750; i )
{
IntToStr(input[i])=sl->Strings[i];
}
delete sl;
ShowMessage(IntToStr(AddMethodEx(1,1)));
CDspII *pDspII;
pDspII = new CDspII();
pDspII->Process(input,Header,ECG);

}
akino0910
一般會員


發表:34
回覆:52
積分:16
註冊:2005-09-30

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-01-25 17:59:17 IP:220.128.xxx.xxx 訂閱
報告大大
你說的兩種方式我都試過了...好像都無法呼叫到我DLL裡面的函式...
不知道大大覺得我的問題出再哪裡?會像是我上一篇說的..
也許是因為我的DLL檔案裡面的函式都適用C 的語法去做宣告的關係嗎?
===================引 用 syntax 文 章===================
如果你只有 DLL,那你就不會用到 *.h
1. 使用 explicit
直接在你的程式內定義 xxxx function xxxxxxxx.... "yyyy.DLL"
2. 使用 implicit
呼叫 LoadLibrary GetProcAddress

===================引 用 akino0910 文 章===================
感謝syntax大大的回覆
小弟昨天才開始接觸DLL的東西...學長去當兵了~~
他只留下DLL跟.h檔給我...
我不太懂大大說的意思><
以下兩種使用跟我引用RaynorPao大大個說法有什麼差別?

===================引 用 syntax 文 章===================
你可能要弄清楚,你要使用的是

1. *.h *.lib
還是
2.自訂宣告(Implicit or explicit) *.DLL

===================引 用 akino0910 文 章===================
請問各位大大
小弟有參考過http://delphi.ktop.com.tw/board.php?cid=168&fid=923&tid=33420
的文章寫法~~將RaynorPao大大的說法依樣畫葫蘆的寫了成功執行的程式

現在我要將之前學長用VC寫的DLL呼叫出來...依照相同的寫法..卻始終會出現
[Linker Error] Unresolved external 'CDspII::Process(int *, float *, float *)' referenced from C:\BCBSTA\UNIT1.OBJ
這樣的錯誤訊息><
不知道各位前輩能否告知~~小弟呼叫DLL是哪邊出了問題?
我將學長程式的.h檔寫上來..再將我用BCB呼叫DLL的程式寫上~~希望各位大大能幫小弟解惑
.h檔程式

class __declspec(dllimport) CDspII
{
public:
CDspII(){};
virtual ~CDspII(){};
BOOL Process(int* Data,float* Header,float* ECG);
protected:
int GetPeakPos(int *Position);
};

BCB的button程式
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float Header[8];
float ECG[3750];
int input[3750];
TStringList *sl=new TStringList;
sl->LoadFromFile("1.txt");//把檔案內容抓到sl
for (int i =0;i<3750; i )
{
IntToStr(input[i])=sl->Strings[i];
}
delete sl;
ShowMessage(IntToStr(AddMethodEx(1,1)));
CDspII *pDspII;
pDspII = new CDspII();
pDspII->Process(input,Header,ECG);

}
Ktop_Robot
站務副站長


發表:0
回覆:3511
積分:0
註冊:2007-04-17

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-06-26 20:50:24 IP:000.000.xxx.xxx 未訂閱
提問者您好:


以上回應是否已得到滿意的答覆?


若已得到滿意的答覆,請在一週內結案,否則請在一週內回覆還有什麼未盡事宜,不然,
將由版主(尚無版主之區域將由副站長或站長)自由心證,選擇較合適之解答予以結案處理,
被選上之答題者同樣會有加分獎勵同時發問者將受到扣 1 分的處分。不便之處,請見諒。


有問有答有結案,才能有良性的互動,良好的討論環境需要大家共同維護,感謝您的配合。

------
我是機器人,我不接受簡訊.
系統時間:2024-03-28 18:24:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!