gpt4 book ai didi

delphi - 在C++ Builder 2010中使用软件包时,如何解决“加载了两个不同的CRTLDLL”的问题?

转载 作者:行者123 更新时间:2023-12-03 15:29:51 26 4
gpt4 key购买 nike

我们正在尝试将整体式EXE拆分为EXE和几个程序包的组合。到目前为止,我们有一个要使用的软件包,运行EXE Codeguard时,在启动时会显示以下错误:

CG错误

加载了两个不同的CRTLDLL。 CG可能报告错误
(C:\ Windows \ system32 \ CC32100MT.DLL)
(D:\ Projects \ Foo \ Bar.bpl)



在读取两个不同的运行时库时,我将其读为-一个,正确的(CC32100MT.dll),一个不正确的库,这是我们要使用的程序包。

继续运行程序会显示出奇怪的错误,尤其是在类之间进行转换或在跨EXE / DLL边界的方法中将指向类的指针作为参数传递时。 Codeguard本身根本不显示任何其他错误。编辑:现在已解决,并且不相关。该程序似乎可以正常运行,但是Codeguard显示的警告仍然令人担忧。

我们该如何解决?

更多细节

我们已经研究了尽可能多的事情(开发人员和我共同考虑):


每个项目都是使用运行时包构建的。 EXE主机在其程序包列表中列出Bar。
每个项目都设置为使用动态RTL进行编译。但是,更改此设置不能解决问题。
程序包通过其BPI文件链接到EXE,但是通过LIB链接也没有区别。
EXE和BPL使用相同的项目设置进行编译,其中两种类型的项目都存在相同的选项。无论如何,我们认为:)
系统上只有BPL和BPI的一个副本:它肯定链接到正确的副本。
DependsTDump检查EXE和BPL显示它们都在使用C:\Windows\system32\CC32100MT.DLL。他们都应该使用一个RTL。
创建一个新项目(一个普通的VCL表单应用程序)并链接到BPL(通过其BPI)工作正常。在添加所有使我们的EXE包含所需代码的文件和LIB的过程中,需要对此进行更改,但是我们无法弄清楚是什么。


所有的LIB要么对应于我们使用的DLL(扁平C接口,通常看起来好像它们是用MSVC构建的),要么是具有大量相关文件的简单项目,被编译为一个lib以便链接到EXE的目的-这些大致对应顺便说一句,我们想将程序划分为BPL。 LIB项目似乎没有可能影响RTL链接的项目选项,除非我们错过了它们。
我已经详尽地搜索了Depends,并查看了EXE和每个单个DLL引用的所有RTL和CC32 * .dll文件。全部相同:rtl140.bpl和CC32100MT.DLL。完全限定的路径也表明它们是相同的文件。一切都应该使用一个相同的运行时库。



编辑:最终的EXE是复杂的,具有几个库,几个DLL等。所有这些,当使用C ++ Builder构建时,都是使用当前版本构建的。这些DLL或LIB之一中是否有可能引起问题的东西?我对RTL的链接方式不太了解,无法确定在哪里看……我(天真?)的假设是链接器通常会链接到一组RTL函数中,但是当然不会似乎正在发生...而且我不知道使用软件包时情况会如何变化。是否有可能因为我们没有使用动态的东西(如程序包)而使该错误一直存在并且Codeguard之前未将其标记出来?

也许另一个问题是,为什么一个程序包总会有自己的RTL,或者什么会使它成为Codeguard的“ RTL DLL”?

我们很沮丧。绝对难过。使用BPL时,我们还遇到了其他问题(它们似乎是棘手的棘手的事情,尤其是使用C ++),但是已经设法解决了所有问题。我们根本没有运气,我们真的很感谢任何见解:)

我们正在使用C ++ Builder 2010(实际上是RAD Studio的一部分,但是除了组件之外几乎没有Delphi代码。)

编辑:开始赏金。我真的很想解决这个问题!

编辑2:感谢David Dean的帮助(标记为以下答复。)他通过电子邮件指出此问题已由其他人在一个简单的测试用例中重现,并登录到Embarcadero QC as report 86335中。当前尚无修复程序,但警告似乎并未表明是真正的问题(即,这可能是一个虚假的错误,虽然很遗憾在运行时必须单击该对话框,但希望该错误中没有任何问题关于。)

最佳答案

由于其中之一来自.bpl,您是否尝试在项目选项中关闭“使用运行时软件包生成”?

关于delphi - 在C++ Builder 2010中使用软件包时,如何解决“加载了两个不同的CRTLDLL”的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3060085/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com