关于一个链接错误:Unresolved external symbol referenced from module

w_zigang 2004-09-24 10:18:08
各位c++的高手帮我看看出现以下错误可能是什么原因造成的?
一个窗体类继承于TRecBaseForm,一编译出现如下错误:
[Linker Error] Unresolved external '__tpdsc__ TRecBaseForm' referenced from D:\TEMP\CLASSTEST\PARAMETER.OBJ
[Linker Error] Unresolved external 'TRecBaseForm::' referenced from D:\TEMP\CLASSTEST\PARAMETER.OBJ
[Linker Error] Unresolved external '__fastcall TRecBaseForm::~TRecBaseForm()' referenced from D:\TEMP\CLASSTEST\PARAMETER.OBJ
[Linker Error] Unresolved external '__fastcall TRecBaseForm::TRecBaseForm(Classes::TComponent *)' referenced from D:\TEMP\CLASSTEST\PARAMETER.OBJ

//---------------------------------------------------------------------------
#ifndef RecBaseFormH
#define RecBaseFormH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ComCtrls.hpp>
#include <ImgList.hpp>
#include <Menus.hpp>
#include <ToolWin.hpp>
#include <Dialogs.hpp>
//---------------------------------------------------------------------------
class TRecBaseForm : public TForm
{
__published: // IDE-managed Components
TStatusBar *sbBar;
TMainMenu *MainMenu1;
TMenuItem *muFile;
TMenuItem *muAddDetail;
TMenuItem *muEditDetail;
TMenuItem *muDeleteDetail;
TMenuItem *N3;
TMenuItem *muCancel;
TMenuItem *muSave;
TMenuItem *N4;
TMenuItem *muPrintSetup;
TMenuItem *muPrint;
TMenuItem *S2;
TMenuItem *muExit;
TMenuItem *muEdit;
TMenuItem *muUnDo;
TMenuItem *N5;
TMenuItem *muCut;
TMenuItem *muCopy;
TMenuItem *muPaste;
TMenuItem *muView;
TMenuItem *muToolBar;
TMenuItem *muStatusBar;
TMenuItem *N8;
TMenuItem *muFind;
TMenuItem *N9;
TMenuItem *muFirst;
TMenuItem *muPrevious;
TMenuItem *muNext;
TMenuItem *muLast;
TMenuItem *muQuery;
TMenuItem *muReport;
TMenuItem *muTools;
TMenuItem *muOptons;
TMenuItem *muHelp;
TMenuItem *muContext;
TMenuItem *muWebSite;
TMenuItem *N11;
TMenuItem *muAbout;
TImageList *ImageList1;
TCoolBar *CoolBar1;
TToolBar *tbMainBar;
TToolButton *tbAddHead;
TToolButton *tbEditHead;
TToolButton *tbDeleteHead;
TToolButton *ToolButton10;
TToolButton *tbCancel;
TToolButton *tbSave;
TToolButton *ToolButton1;
TToolButton *tbFirst;
TToolButton *tbPrevious;
TToolButton *tbNext;
TToolButton *tbLast;
TToolButton *ToolButton2;
TToolButton *tbQuery;
TToolButton *tbPrint;
TToolButton *tbHelp;
TToolButton *tbControl;
TToolButton *ToolButton4;
TToolButton *tbCheck;
TToolButton *ToolButton3;
TPrintDialog *RecPrintDlg;
TPrinterSetupDialog *PrnSetupDlg;
TToolButton *tbGenrate;
TToolButton *ToolButton6;
TToolButton *tbExport;
TToolButton *tbClose;
TMenuItem *muUnCheck;
TMenuItem *muUnClose;
TMenuItem *N1;

void __fastcall muAddDetailClick(TObject *Sender);
void __fastcall muEditDetailClick(TObject *Sender);
void __fastcall muDeleteDetailClick(TObject *Sender);

void __fastcall muCancelClick(TObject *Sender);
void __fastcall muSaveClick(TObject *Sender);
void __fastcall muPrintClick(TObject *Sender);
void __fastcall muUnDoClick(TObject *Sender);
void __fastcall muToolBarClick(TObject *Sender);
void __fastcall muStatusBarClick(TObject *Sender);

void __fastcall muFirstClick(TObject *Sender);
void __fastcall muPreviousClick(TObject *Sender);
void __fastcall muNextClick(TObject *Sender);
void __fastcall muLastClick(TObject *Sender);

void __fastcall muContextClick(TObject *Sender);
void __fastcall muWebSiteClick(TObject *Sender);
void __fastcall muAboutClick(TObject *Sender);
void __fastcall FormCloseQuery(TObject *Sender, bool &CanClose);
void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
void __fastcall tbControlClick(TObject *Sender);
void __fastcall tbQueryClick(TObject *Sender);
void __fastcall tbCheckClick(TObject *Sender);
void __fastcall muPrintSetupClick(TObject *Sender);
void __fastcall FormActivate(TObject *Sender);
void __fastcall muOptonsClick(TObject *Sender);
void __fastcall tbGenrateClick(TObject *Sender);
void __fastcall tbExportClick(TObject *Sender);
void __fastcall tbCloseClick(TObject *Sender);
void __fastcall muExitClick(TObject *Sender);
void __fastcall muUnCheckClick(TObject *Sender);
void __fastcall muUnCloseClick(TObject *Sender);
void __fastcall FormKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift);
private:
//this variable indicate the current state of form
long ComErrNum;
bool IsCreate;
int m_AutoQuery;
AnsiString m_QueryString;
int m_AutoCode;
char m_MaskAutoCode;
int m_QueryStatus; //用于标示查询是成功还是失败 1-成功,0-失败
bool m_BillCanceled;
bool m_BillChecked;
bool m_BillClosed;
AnsiString FixedFilStr;


protected: // User declarations


public: // User declarations
__fastcall TRecBaseForm(TComponent* Owner);
__fastcall ~TRecBaseForm();

// __property int QueryStatus={read=m_QueryStatus,write=m_QueryStatus};

protected:

};
//---------------------------------------------------------------------------
extern PACKAGE TRecBaseForm *RecBaseForm;
//---------------------------------------------------------------------------
#endif
...全文
799 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zcchm 2004-09-29
  • 打赏
  • 举报
回复
你可以这样:
//////////////////////////////
TRecBaseForm.h

void __fastcall muAddDetailClick(TObject *Sender);
virtual void do_muAddDetailClick(TObject *Sender) = 0;
//////////////////////////////
TRecBaseForm.cpp

void __fastcall TRecBaseForm::muAddDetailClick(TObject *Sender)
{
do_muAddDetailClick(Sender);
}

在派生类里实现virtual function : do_muAddDetailClick(Sender);但是你必须实现 muAddDetailClick,因为它不是pure virtual function, 只有virtual function只声明,无实现。

w_zigang 2004-09-29
  • 打赏
  • 举报
回复
多谢指教!
w_zigang 2004-09-27
  • 打赏
  • 举报
回复
我发现是由于在基类中声明了函数比如:void __fastcall muAddDetailClick(TObject *Sender);
但是在基类中没有实现,我打算子类中实现造成的。
我必须在基类中实现么?我不想在基类中实现有什么方法?多谢指教!
sunliwen780502 2004-09-24
  • 打赏
  • 举报
回复
从你给出的代码还看不出究竟是怎么引起的错误,先查看一下头文件和函数的声明.
tanlim 2004-09-24
  • 打赏
  • 举报
回复
这是变量重复定义的错误,
EXTERN 关键字用的不好
查查有没重复定义的全局变量或者与其他头文件定义的变量冲突
特招 2004-09-24
  • 打赏
  • 举报
回复
你在编译BCB程序的时候,先点击菜单Project,之后点击options
在Compiler选项页中点击Release按钮,重新编译试试

13,824

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧