全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:5115
推到 Plurk!
推到 Facebook!

Codegear2009 靜態Link Class DLL 異常現象

答題得分者是:springLiu
deanmac85
一般會員


發表:13
回覆:4
積分:3
註冊:2007-05-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-01-12 19:49:38 IP:122.147.xxx.xxx 未訂閱
[1]製作 DLL : File => new => Other => Dynamic-link Library
Source Type : C Use VCL

[code cpp]
// LinkDLL.cpp
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
return 1;
}
//---------------------------------------------------------------------------
class __declspec(dllexport) CBook
{
public:
CBook() ;
CBook(const CBook& book) ;
CBook& CBook::operator=(const CBook& book) ;
virtual ~CBook() ;
public:
AnsiString m_szName ;
int m_nIdx ;
};
CBook::CBook()
{
m_nIdx = 0 ;
}
CBook::CBook(const CBook& book)
{
m_nIdx = book.m_nIdx ;
m_szName = book.m_szName ;
}
CBook& CBook::operator=(const CBook& book)
{
m_nIdx = book.m_nIdx ;
m_szName = book.m_szName ;
return *this ;
}
CBook:: ~CBook()
{
}
[/code]

[2]製作Form1 : File => new => VCL Form Application - C Builder
最後在Form1上加上status bar 元件


[code cpp]
//Main.h
class __declspec(dllimport) CBook
{
public:
CBook() ;
CBook(const CBook& book) ;
CBook& CBook::operator=(const CBook& book) ;
virtual ~CBook() ;
public:
AnsiString m_szName ;
int m_nIdx ;
};
class TForm1 : public TForm
{
__published: // IDE-managed Components
TStatusBar *StatusBar1;
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
CBook A; //宣告
};

[/code]

整個compiler過程都是ok的 0 error 0 worry
Form 關閉時 會造成程式當掉 出現error
經過同樣的方式在bcb 6.0是ok的
經過測試結果
DLL在新開project如果不句選vcl的話 dll給 form1使用是ok的
問題出在vcl 這個有辦法排除掉嗎
還是哪邊還要做設定
使用vcl的 dll 主要目地是為了方便使用String
還是我的class宣告或使用是有錯誤的呢?
情況 只有加上status bar 沒有 CBook A宣告就OK~
那有宣告CBook A 不加上status bar 也OK~
就是2者不能同時存在 ~"~
使用codegear2009 Update2
source code 如附件



編輯記錄
deanmac85 重新編輯於 2009-01-12 19:53:22, 註解 無‧
deanmac85 重新編輯於 2009-01-12 19:54:19, 註解 無‧
deanmac85 重新編輯於 2009-01-12 19:55:43, 註解 無‧
deanmac85 重新編輯於 2009-01-12 20:05:59, 註解 無‧
deanmac85 重新編輯於 2009-01-13 08:56:10, 註解 說明error操作‧
deanmac85 重新編輯於 2009-01-13 08:56:35, 註解 無‧
springLiu
一般會員


發表:0
回覆:1
積分:5
註冊:2005-04-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-01-22 13:53:02 IP:210.68.xxx.xxx 訂閱
問題已經解決了, 把 dll project 的 設定, "build with run time package" 選項 uncheck 即可,

在 原本的 bcb6.0上,是可以正常動作的 , 不解 ??
系統時間:2024-11-21 16:44:00
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!