我从Embarcadero C ++ Builder XE迁移了一些DLL和一个应用程序到C ++ Builder 10.1 Berlin。
现在,当我的DLL(包含表单)被应用程序加载时,我得到了
EOutofResources "Das angegebene übergeordnete Element ist kein übergeordnetes Element von '%s'"
在TApplication :: CreateHandle中
搜索了几个小时后,我发现没有人遇到相同的错误,甚至没有英文翻译。我将其翻译为“指定的父元素不是'%s'的父元素”。
我的堆栈跟踪:
当我在DLL的代码中设置断点时,不会触发任何断点,因此我不确定为什么还要调用TApplication构造函数(我的代码中有一个,但似乎没有被调用)。
我怀疑依赖项存在一些问题,因此我使用了依赖项walker,它发现了两个64位dll。不确定这是否是假阳性:
我该怎么做才能进一步解决或诊断这个问题?
答案 0 :(得分:1)
我尝试启动一个新的VCL类型项目,以查看项目设置中是否存在差异,瞧瞧:
<PropertyGroup>
<ProjectGuid>{E8815773-6421-4FB8-A109-F4F505A67A2E}</ProjectGuid>
<ProjectVersion>18.2</ProjectVersion>
<FrameworkType>VCL</FrameworkType>
<AppType>Application</AppType>
<MainSource>Project1.cpp</MainSource>
<Base>True</Base>
<Config Condition="'$(Config)'==''">Debug</Config>
<Platform Condition="'$(Platform)'==''">Win32</Platform>
<TargetedPlatforms>1</TargetedPlatforms>
</PropertyGroup>
新创建的项目的元素FrameworkType
设置为VCL
。我迁移的项目将此设置为None
。将其更改为VCL
后,错误消失了。