DLL

时间:2019-10-28 15:54:19

标签: c++builder c++builder-10.1-berlin

我从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'的父元素”。

我的堆栈跟踪:

Stack trace

当我在DLL的代码中设置断点时,不会触发任何断点,因此我不确定为什么还要调用TApplication构造函数(我的代码中有一个,但似乎没有被调用)。

我怀疑依赖项存在一些问题,因此我使用了依赖项walker,它发现了两个64位dll。不确定这是否是假阳性:

dependency walker output

我该怎么做才能进一步解决或诊断这个问题?

1 个答案:

答案 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后,错误消失了。