错误提示 [Linker Error] Unresolved external '__fastcall TForm1::FormDestroy(System::TObject *)' referenced from D:\C++ BUILDER\C++ B

时间:2021-01-08 04:51:36
    在做一个能将程序最小到系统托盘的东东

编译通过,没有任何错误

    但是在生成和运行时都有 [Linker Error] Unresolved external '__fastcall TForm1::FormDestroy

(System::TObject *)' referenced from D:\C++ BUILDER\C++ BUILDER\PROJECTS\系统托盘\MAIN.OBJ

的提示 - -  

    哪位大大能告诉是怎么回事么 谢谢了

9 个解决方案

#1


把工程下的所有obj文件删除掉 

重新build一遍,再运行试试

如果还不行,加入
#pragma link "Main.obj"
看看

#2


按照楼上的方法做了 - -
问题依然,郁闷ing

#3


声明了没实现?

#4


检查FormDestroy函数。

#5


FormDestroy函数你声明了,但是没有具体实现

#6


/////////////////////////////////////////////////////////////
我测试了下 ,双击OnDestroy事件,然后把bcb产生的事件函数注释掉就出现楼主的错误

/*
void __fastcall TForm1::FormDestroy(TObject *Sender)
{

}
//---------------------------------------------------------------------------

*/


原因是:
你的头文件有 FormDestroy函数的声明

cpp里有没有他的实现啊,或者至少写一个空的实现

 __fastcall TForm1::FormDestroy(System::TObject *Sender)

 {

////ShowMessage("Form Destroy!");

 }

#7


是你在TForm1的类说明里声明了这个FormDestroy函数,但是代码CPP文件里没有这个函数的实现,而且是在form的对象属性里OnDestroy这个事件指向了这个FormDestroy函数.
有两个解决方法,要么在类说明里删除这个函数的说明,然后在form对象属性事件中删除这个指向
要么把FormDestory这个函数加回到CPP代码文件中.

楼主如果是误生成了一个函数,不要在代码CPP文件中删除,将这个函数体清空,然后按保存,那么BCB里会自己将没有代码(也包括没有注释)的函数消除.

#8


还有一种情况.
BCB不支持运行程序文件路径有特殊符号,如你的"++"就是一个问题.
将你的工程移去没有特殊符号的路径.

#9


我把楼上各位的方法都尝试了,但是没有用啊!看看我的![Linker Error] Unresolved external 'TForm1::' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\NEW IMAGEBROWSER\IMAGEBROWSER_NEW.OBJ

大家多帮忙啊!我也是刚学C++Builder 不久!

#1


把工程下的所有obj文件删除掉 

重新build一遍,再运行试试

如果还不行,加入
#pragma link "Main.obj"
看看

#2


按照楼上的方法做了 - -
问题依然,郁闷ing

#3


声明了没实现?

#4


检查FormDestroy函数。

#5


FormDestroy函数你声明了,但是没有具体实现

#6


/////////////////////////////////////////////////////////////
我测试了下 ,双击OnDestroy事件,然后把bcb产生的事件函数注释掉就出现楼主的错误

/*
void __fastcall TForm1::FormDestroy(TObject *Sender)
{

}
//---------------------------------------------------------------------------

*/


原因是:
你的头文件有 FormDestroy函数的声明

cpp里有没有他的实现啊,或者至少写一个空的实现

 __fastcall TForm1::FormDestroy(System::TObject *Sender)

 {

////ShowMessage("Form Destroy!");

 }

#7


是你在TForm1的类说明里声明了这个FormDestroy函数,但是代码CPP文件里没有这个函数的实现,而且是在form的对象属性里OnDestroy这个事件指向了这个FormDestroy函数.
有两个解决方法,要么在类说明里删除这个函数的说明,然后在form对象属性事件中删除这个指向
要么把FormDestory这个函数加回到CPP代码文件中.

楼主如果是误生成了一个函数,不要在代码CPP文件中删除,将这个函数体清空,然后按保存,那么BCB里会自己将没有代码(也包括没有注释)的函数消除.

#8


还有一种情况.
BCB不支持运行程序文件路径有特殊符号,如你的"++"就是一个问题.
将你的工程移去没有特殊符号的路径.

#9


我把楼上各位的方法都尝试了,但是没有用啊!看看我的![Linker Error] Unresolved external 'TForm1::' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\NEW IMAGEBROWSER\IMAGEBROWSER_NEW.OBJ

大家多帮忙啊!我也是刚学C++Builder 不久!