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

VC產生的DLL中的class要如何使用?

尚未結案
howdz
一般會員


發表:17
回覆:12
積分:5
註冊:2003-12-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-05-26 17:13:48 IP:61.219.xxx.xxx 訂閱
請教各位,我用VC產生了一個DLL,
Test.h:
[code cpp]
class __declspec(dllexport) CTest{
public:
CTest(){};
virtual ~CTest(){};

bool Load(TCHAR *FileName, DWORD ImageType);
};
[/code]
Test.cpp:
[code cpp]
bool CTest::Load(TCHAR *FileName, DWORD ImageType)
{
if(!Image.Load(FileName, ImageType))
return false;

Image.Save("test.bmp", CXIMAGE_FORMAT_BMP);
return true;
}
[/code]
然後我在BCB的project中#include "Test.h",
並宣告CTest Test; 都可compile過關;

但我執行Test.Load("D:\\001_1.Bmp", CXIMAGE_FORMAT_BMP) 時,
如果未加入Test.lib 會出現
[Linker Error] Unresolved external 'CTest::Load(char *, unsigned long)' referenced from X:\XXX\UNIT1.OBJ

但直接加入VC產生的 Test.lib 會出現
[Linker Error] 'X:\XXX\Test.LIB' contains invalid OMF record, type 0x21 (possibly COFF)

使用 IMPLIB -a Test.lib Test.dll 後加入 Test.lib ,則又出現錯誤訊息:
[Linker Error] Unresolved external 'CTest::Load(char *, unsigned long)' referenced from X:\XXX\UNIT1.OBJ

我始終無法使用class裡的function,請問我該怎麼修改??
編輯記錄
howdz 重新編輯於 2009-05-26 17:14:27, 註解 無‧
ikk
尊榮會員


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-05-26 18:31:21 IP:163.28.xxx.xxx 訂閱
使用 DLL 中的class, 是有些技巧在的,
可以使用"DLL export c class" 關鍵字在網路上找相關資料.....
------
FPGA驗證, FPGA開發平台, http://smims.com
howdz
一般會員


發表:17
回覆:12
積分:5
註冊:2003-12-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-05-26 19:38:00 IP:61.219.xxx.xxx 訂閱
Hi, ikk :
我有搜尋過,不過幾乎都是VC去呼叫VC的DLL(這我已經有成功試出來了),
再不然就是BCB去呼叫VC的DLL,但是DLL裡只export function出來;
但我目前需要的是BCB去呼叫VC的DLL、
而且去呼叫DLL中export出來的class裡的member function...
我如果用一樣的方式去呼叫,就會出現像我發文說的狀況。

是否有BCB呼叫VC產生的DLL,並使用DLL中的class裡的function的範例?

===================引 用 ikk 文 章===================
使用 DLL 中的class, 是有些技巧在的,
可以使用"DLL export c class" 關鍵字在網路上找相關資料.....
編輯記錄
howdz 重新編輯於 2009-05-26 20:50:16, 註解 無‧
aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-05-27 19:40:36 IP:210.64.xxx.xxx 訂閱
>>而且去呼叫DLL中export出來的class裡的member function...

不可能的任務!! cb與vc最多能互相分享function(使用extern c 語法)。若想要取對方的class…因為mangling的問題,是不可能的任務。
------


蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
系統時間:2024-11-23 5:44:41
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!