delphi – 为什么带有$L指令的链接对象文件的顺序很重要?
我使用静态链接的sqlite数据库,为了编译每个下一个版本,我有时必须对使用的目标文件列表进行微小的更改.
但有时我必须做出的改变让我感到困惑. 例如,在版本3_6_10此订单之前 {$L 'Objsis.OBJ'} {$L 'Objsmbisspc.OBJ'} 没关系,但是从3_6_12开始,链接器说 unsatisfied forward or external declaration _isspace 但改变顺序为 {$L 'Objsmbisspc.OBJ'} {$L 'Objsis.OBJ'} 帮助. 那么为什么带有$L指令的链接对象文件的顺序很重要,我可以在哪里阅读更多相关内容?我想这是与列出的obj文件的交叉使用有关的东西,但如果我理解发生了什么,我会感觉更安全 谢谢 解决方法
编辑:
截至David Heffernan链接到his answer到另一个question on linking .obj file in Delphi的评论,我用编译器替换了链接器,并在下面添加了一个斜体部分: C编译器使用多通道链接器编译器,该编译器知道如何解决.obj文件之间的正向和循环依赖关系. 由于Delphi链接器编译器针对的是Delphi语言,并且Delphi语言不允许这样做,因此链接器编译器也不允许这样做. Pro:链接器编译器要快得多. Con:您需要通过以正确的顺序放置.obj文件来帮助链接器编译器 –jeroen (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |