从其它平台迁移而来


在使用Lazarus编写动态库的过程中遇到了报Error: Undefined symbol:错误的问题,死活编译不过去,加了LCL包依赖也不行,找了N久终于在一个英文网站上找到了解决办法。

Error: Undefined symbol:错误会依据所写的代码用到的单元不同而有一定的差异,我遇到的报错大致如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
project1.lpr(18,1) Error: Undefined symbol: WSRegisterCustomImageListResolution
project1.lpr(18,1) Error: Undefined symbol: WSRegisterMenuItem
project1.lpr(18,1) Error: Undefined symbol: WSRegisterMenu
project1.lpr(18,1) Error: Undefined symbol: WSRegisterMainMenu
project1.lpr(18,1) Error: Undefined symbol: WSRegisterPopupMenu
project1.lpr(18,1) Error: Undefined symbol: WSRegisterDragImageListResolution
project1.lpr(18,1) Error: Undefined symbol: WSRegisterLazAccessibleObject
project1.lpr(18,1) Error: Undefined symbol: WSRegisterControl
project1.lpr(18,1) Error: Undefined symbol: WSRegisterWinControl
project1.lpr(18,1) Error: Undefined symbol: WSRegisterGraphicControl
project1.lpr(18,1) Error: Undefined symbol: WSRegisterCustomControl
project1.lpr(18,1) Error: Undefined symbol: WSRegisterScrollingWinControl
project1.lpr(18,1) Error: Undefined symbol: WSRegisterScrollBox
project1.lpr(18,1) Error: Undefined symbol: WSRegisterCustomFrame
project1.lpr(18,1) Error: Undefined symbol: WSRegisterCustomForm
project1.lpr(18,1) Error: Undefined symbol: WSRegisterHintWindow

其实之前已经离解决问题很近了,只需再uses一个Interfaces,即:

  1. Project InspectorRequired Packages里添加LCL

  2. 在工程单元的uses列表里添加Interfaces单元