c++builder - DLL 中的 EOutOfResources
问题描述
我将几个 DLL 和一个应用程序从 Embarcadero C++ Builder XE 迁移到 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。不确定这是否是误报:
我能做些什么来进一步解决或诊断这个问题?
解决方案
我尝试启动一个新的 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
,错误消失了。
推荐阅读
- gremlin - Gremlin - sum values in group
- python - Python * changes the variable?
- flutter - How to make the stroke width 1px in flutter's customPainter
- java - Unity Ads Not Displaying?
- r - Why does one computer throw an error and another not, same code?
- c# - ArrayPool 创建方法在 C# 中给出错误
- javascript - 在反应原生外部组件中调用函数
- c# - 打开损坏的 .xls 文件
- javascript - 组件的条件渲染
- mongodb - 使用 typegoose 从嵌套对象自动创建新文档