C++ Builder 中未解决的外部链接器错误

Unresolved external linker error in C++Builder

提问人:Pier Nardin 提问时间:11/2/2022 最后编辑:Remy LebeauPier Nardin 更新时间:11/2/2022 访问量:213

问:

我是 C++ Builder 的新手。我正在将一个Delphi项目翻译成C++。我已经将一些Delphi代码翻译成C++,它在C++ Builder中编译良好,但是我收到一个错误:

未解析的外部 ColorClasses::TColorList:: 引用自 ...

当我以这种方式在我的MainForm中使用构造函数时:TColorList

ColorClasses::TColorList *cl;

cl = new ColorClasses::TColorList();

构造函数在文件中定义如下:TColorListColorClasses.cpp

__fastcall ColorClasses::TColorList::TColorList() : TColorClass()
{
  fcolor_list = new TList();
}

该类在文件中声明如下:TColorListColorClasses.h

class DELPHICLASS TColorList;

class PASCALIMPLEMENTATION TColorList : public TColorClass
{
private:
  TList* fcolor_list;

public:
  __fastcall TColorList();
  virtual __fastcall ~TColorList();
};

我已经在 StackOverflow 站点上搜索了与 C++ Builder 相关的类似问题,但我找不到特定于我的问题的问题。

C++Builder 未解析外部

评论

0赞 11/2/2022
如果您的.cpp中有__fastcall ColorClasses::TColorList::TColorList() 构造函数,则 .h 中的声明必须与此匹配,从而产生错误,但我可能是错的。
0赞 Pier Nardin 11/2/2022
我在 ColorClasses.h 中有命名空间 ColorClasses { ... },所以我不需要完全相同的声明。

答:

2赞 Pier Nardin 11/2/2022 #1

如果我删除关键字 DELPHICLASS 和 PASCALIMPLEMENTATION,问题似乎会自行解决。

评论

1赞 Remy Lebeau 11/2/2022
是的,您需要删除这些,因为该文件没有引用在 Delphi pascal 中实现的类。.h