关于一个链接错误: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
...全文
824 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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按钮,重新编译试试
笔记本的风扇控制 ---------------------------------------- 09 November 2006. Summary of changes for version 20061109: 1) ACPI CA Core Subsystem: Optimized the Load ASL operator in the case where the source operand is an operation region. Simply map the operation region memory, instead of performing a bytewise read. (Region must be of type SystemMemory, see below.) Fixed the Load ASL operator for the case where the source operand is a region field. A buffer object is also allowed as the source operand. BZ 480 Fixed a problem where the Load ASL operator allowed the source operand to be an operation region of any type. It is now restricted to regions of type SystemMemory, as per the ACPI specification. BZ 481 Additional cleanup and optimizations for the new Table Manager code. AcpiEnable will now fail if all of the required ACPI tables are not loaded (FADT, FACS, DSDT). BZ 477 Added #pragma pack(8/4) to acobject.h to ensure that the structures in this header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been manually optimized to be aligned and will not work if it is byte-packed. Example Code and Data Size: These are the sizes for the OS- independent acpica.lib produced by the Microsoft Visual C++ 6.0 32- bit compiler. The debug version of the code includes the debug output trace mechanism and has a much larger code and data size. Previous Release: Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total Debug Version: 155.4K Code, 63.1K Data, 218.5K Total Current Release: Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 2) iASL Compiler/Disassembler and Tools: Fixed a problem where the presence of the _OSI predefined control method within complex expressions could cause an internal compiler error. AcpiExec: Implemented full region support for multiple address spaces. SpaceId is now part of the REGION object. BZ 429 ---------------------------------------- 11 Oc

13,871

社区成员

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

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