问题标签 [c++builder-10-seattle]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - TStyledPresentationProxy 的后代尚未注册类
我有一个继承自TGrid
被调用的自定义网格控件TFmGrid
。此控件在 Rad Studio 10 Seattle Update One 中运行良好。TFmGrid
我最近升级到 10.1 Berlin 并开始注意到在我运行应用程序和设计器时在我的控件上显示此错误消息:
尚未为类 TFmGrid 注册 TStyledPresentationProxy 的后代。也许有必要将 FMX.Grid.Style 模块添加到使用部分
下图显示了错误消息如何显示在我的网格控件上:
我首先按照消息的建议进行操作,然后添加#include <FMX.Grid.Style.hpp>
到我的TFmGrid
控件的头文件中,但这似乎什么也没做。
因此,就尝试注册后裔而言,TStyledPresentationProxy
我不确定从哪里开始。我找到了有关以下方法的文档:
尝试使用指定名称或控件类和控件类型的指定组合注册表示代理类。
所以我假设我需要使用这个方法或至少类似的东西,但我不明白我应该如何调用这个方法。
但随之而来的问题是我在哪里调用这段代码?
我的自定义控件在其命名空间中有一个名为的方法Register()
,我相信它是在创建控件时由 IDE 自动生成的:
我需要在那里打电话登记一个后裔TStyledPresentationProxy
吗?解决这个问题的正确方法是什么?
openssl - 在 C++Builder 中使用 OpenSSL
我正在西雅图 C++Builder 10 中编译一个应用程序,并尝试使用 OpenSSL 进行 RSA 工作。
我遵循了本教程:
如何使用 OpenSSL 在 C/C++ 中生成 RSA 密钥
这是代码:
当我添加libeay32.lib
到ssleay32.lib
我的项目时,我收到一条错误消息:
[ilink32 错误] 错误:'C:\USERS\ERICWANG\DESKTOP\TESTOPENSSL2\LIB\LIBEAY32.LIB' 包含无效的 OMF 记录,类型 0x21(可能是 COFF)
我已经看到了一些技巧,比如使用coff2omf
和implib
工具,但两者都不起作用。
我
coff2omf.exe
以前是转换libeay32.lib
的。我把coff2omf.exe
和libeay32.lib
放在同一个文件夹中,然后输入了这个命令:它说:
错误:COFF 错误:libeay32.lib:检测到无效的机器类型
我尝试
libeay32.lib
使用. 我输入了这个命令:.dll
implib.exe
它说:
错误:无法打开文件
我
libeay32.lib
将其大小更改为 1KB 文件。这意味着文件错误。
c++builder - 如何构建 Xerces-c 库以与 Embarcadero Technologies C++ Builder 一起使用?
我从 xerces.appache 镜像下载了 Xerces-c 源代码。我想为 32 位和 64 位创建一个可与 C++Builder 10.0 Seattle 一起使用的 DLL。
构建说明和下载存档提供了一个 Visual C++ 解决方案,我可以将其与 VS Studio Express 2015 一起使用,或者使用为 Borland C++ 设计的 make 文件进行构建的说明。十年前,Borland 放弃了 C++ 工具,所以甚至没有尝试 make 文件,我认为它们无法与我的 Embarcadero 10.0 Seattle 编译器一起使用。因此,我使用 VS Studio Express 2015 构建了 xerces-all,一切似乎都可以正常工作。(DLL 构建没有错误,示例构建并似乎运行。)
我一直在尝试对 VS Studio 解决方案进行更改(将调用约定从 更改__cdecl
为__stdcall
),但这只会使示例无法构建。
根据 Remy Lebeau 的建议和我找到的这篇文章(Using Visual C++ DLLs with C++Builder),我尝试使用 Embarcadero 实用程序 TDUMP、IMPDEF 和 IMPLIB 从构建的 DLL 中提取导出名称。这些产生如下所示的输出:
我在这个线程中发布了我试图构建的应用程序代码作为一个简单的测试:
C++ Builder 测试应用程序中未解决的外部“xercesc_3_1::XMLPlatformUtils::Initialize”
我迷惑得难以置信。如何获得可以与我的工具一起使用的 DLL或LIB?
dll - 使用运行时库部署 VCL 应用程序....如何链接到 32 位和 64 位?
我有一个将 VCL 应用程序部署到的 Win 7 64 位系统。
我在该系统上运行了 64 位 VCL 和 32 位 VCL 应用程序。
64 位应用程序已在 C++ Builder 10.0 Seattle 中构建并且运行良好。
32 位应用程序正在升级到西雅图,这就是混乱的来源。我收到一个错误,无法在 borlndmm.dll 中找到包装器。我从 C++Builder 的 Win32 和 Win64 redist 文件夹中更新了 System32 和 SySWOW64 目录中的 DLL。我现在收到错误“应用程序无法正确启动 0xc00007b”。看起来 32 位应用程序正在链接到 64 位 DLL。
如何让 64 位和 32 位 VCL 应用程序在同一系统上共存并正确链接到它们各自的 DLL?我该如何纠正?
我希望我可以将 32 位应用程序编译为不需要 borlndmm.dll,但即使禁用了“与动态 RTL 链接”和“与运行时包链接”选项,在与 borlndmm.dll 链接时也会出现错误。
dll - VCL 应用程序 - AxisMediaControl.dll 动态链接文件位置
我有一个在西雅图 C++Builder 10.0 中构建的 VCL 应用程序。它使用表单上的 Axis Media Control 来显示视频,因此它会在AxisMediaControl.dll
运行时加载文件。
过去,我将它部署在 32 位目标机器上,应用程序位于该C:\Program Files\AppName
目录中,并且AxisMediaControl.dll
安装到同一位置。一切都按预期工作。
这个应用程序是32位应用程序,所以部署到64位目标机器时,安装在C:\Program File (x86)\AppName
目录中。再次,该AxisMediaControl.dll
文件部署在应用程序目录中。
该应用程序无法启动,并出现错误“找不到指定的模块”。Program Files
使用 Process Monitor,我发现该程序正在旧目录而不是x86
dir中寻找 Axis DLL 。什么会导致应用程序在该位置查找 DLL?
在我的开发机器上运行相同的二进制文件,应用程序从我的SysWOW64
目录加载 DLL。如果 DLL 放置在目标机器上,它仍然无法在该位置查找。它只是查看旧的Program Files
应用程序路径,我无法理解。
我希望有人可以提供一些启示。
c++builder - 在 C++ Builder 10 中打开单元以 .h 开头
大约半年前,我们公司从 C++ Builder 5 切换到 C++ Builder 10 Seattle。如果您在 C++ Builder 5 中打开了一个单元(通过快捷键CTRL+ F12),它会自动打开 .cpp 文件。
现在,如果您使用 C++ Builder 10 打开一个单元,它会从 .h 文件开始,我必须手动切换到 .cpp 文件。这听起来像是一个小小的不便,但每次打开一个单元时我都必须切换,这真的很烦人。
是否有允许我切换到旧行为的设置?