CEF4 在 C++ Builder 10.2.1下,编译报错。。。

draculamx 2020-08-27 07:18:05
CEF4 下载地址:https://github.com/salvadordf/CEF4Delphi
在delphi 10.2.1中,编译正常,安装正常。

打开 C++ Builder 10.2.1,窗体上丢几个相关控件:
TChromium *chrm1;
TCEFWindowParent *cfwndwprnt1;

编译,提示“uCEFConstants.hpp”中有错误:

static const System::Word WM_POINTERUPDATE = System::Word(0x245);
static const System::Word WM_POINTERDOWN = System::Word(0x246);
static const System::Word WM_POINTERUP = System::Word(0x247);

static const System::Int8 USER_DEFAULT_SCREEN_DPI = System::Int8(0x60);

错误内容:[bcc32 Error] uCEFConstants.hpp(519): E2040 Declaration terminated incorrectly

经查,错误原因是,这些静态变量的名称,已经在“winuser.h”中被定义。。。
以下是“winuser.h”中的定义:

#define WM_POINTERUPDATE 0x0245
#define WM_POINTERDOWN 0x0246
#define WM_POINTERUP 0x0247
#define USER_DEFAULT_SCREEN_DPI 96

这就很尴尬了。。。。
...全文
1043 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
我感觉
Ucefapplication::GlobalCEFApp =new TCefApplication();
Ucefapplication::GlobalCEFApp->LogFile = "debug.log";
Ucefapplication::GlobalCEFApp->LogSeverity = LOGSEVERITY_INFO;
Ucefapplication::GlobalCEFApp->Cache = "cache";
Ucefapplication::GlobalCEFApp->EnablePrintPreview = true;
应该放在TFormMain::FormCreate中
delete Ucefapplication::GlobalCEFApp;放在TFormMain::FormDestroy中
draculamx 2020-08-27
  • 打赏
  • 举报
回复
这是论坛里有人贴出的代码: https://bbs.csdn.net/topics/392343611
draculamx 2020-08-27
  • 打赏
  • 举报
回复
我也不懂啊。。我照着Delphi的Demo来的啊。。现在可以运行了,也可以浏览网页,但是退出程序的时候,直接报个AV错误。。
ooolinux 2020-08-27
  • 打赏
  • 举报
回复
不懂。你那几行代码为什么放在winmain里,不放窗体构造函数里。
draculamx 2020-08-27
  • 打赏
  • 举报
回复
工程文件代码如下:

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include <tchar.h>
#include "uCEFApplication.hpp"
#include "uCEFChromium.hpp"
//---------------------------------------------------------------------------
USEFORM("FormMainUnit.cpp", FormMain);
//---------------------------------------------------------------------------
int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
	Ucefapplication::GlobalCEFApp =new TCefApplication();
	Ucefapplication::GlobalCEFApp->LogFile             = "debug.log";
	Ucefapplication::GlobalCEFApp->LogSeverity         = LOGSEVERITY_INFO;
	Ucefapplication::GlobalCEFApp->Cache               = "cache";
	Ucefapplication::GlobalCEFApp->EnablePrintPreview  = true;

	try
	{
		Application->Initialize();
		Application->MainFormOnTaskBar = true;
		Application->CreateForm(__classid(TFormMain), &FormMain);
		Application->Run();
	}
	catch (Exception &exception)
	{
		Application->ShowException(&exception);
	}
	catch (...)
	{
		try
		{
			throw Exception("");
		}
		catch (Exception &exception)
		{
			Application->ShowException(&exception);
		}
	}

	delete Ucefapplication::GlobalCEFApp;

	return 0;
}
//---------------------------------------------------------------------------
窗体文件代码如下:

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "FormMainUnit.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "cefvcl"
#pragma link "uCEFChromiumWindow"
#pragma link "uCEFWinControl"
#pragma link "uCEFChromiumWindow"
#pragma link "uCEFWinControl"
#pragma link "uCEFChromium"
#pragma link "uCEFChromiumCore"
#pragma link "uCEFWindowParent"
#pragma resource "*.dfm"
TFormMain *FormMain;
//---------------------------------------------------------------------------
__fastcall TFormMain::TFormMain(TComponent* Owner)
	: TForm(Owner)
{

}
//---------------------------------------------------------------------------
void __fastcall TFormMain::btnGOClick(TObject *Sender)
{

	chrm1->LoadURL(txtURL->Text);
}
//---------------------------------------------------------------------------


void __fastcall TFormMain::tmr1Timer(TObject *Sender)
{
	tmr1->Enabled = false;

	bool r=chrm1->CreateBrowser(cfwndwprnt1,"");
	if( !r && !chrm1->Initialized )
	{
		tmr1->Enabled = true;
	}
	else
	{
		ShowMessage("Ready!");
	}
}
//---------------------------------------------------------------------------

运行结果: ShowMessage永远不会弹出,也就是说,初始化始终完成不了 点了按钮,打开一个页面,始终打不开。。 debug文件夹下,已经放入了控件运行所需要的库文件:
draculamx 2020-08-27
  • 打赏
  • 举报
回复
解决方案,直接注释掉出错的代码即可。。。 还有就是,CEF4在CB下咋用的。。。我就简单显示个页面都出不来。。。
源码直接下载地址: https://pan.quark.cn/s/1c143f32ee83 华为作为全球领先的通信设备供应商,其产品系列广泛涉及各类网络设备,其中包括我们接下来要探讨的上网卡产品。华为上网卡驱动程序是一种专门为华为品牌旗下多种型号上网卡开发的软件模块,其主要功能在于保障这些设备与计算机操作系统的无缝对接。涉及的型号涵盖EC8189、EC226、EC169C、EC360、EC1260、EC1261、EC189、EC122、EC150以及EC168,这些均是由华为公司推出的移动宽带调制解调器,旨在通过移动网络实现便捷的互联网接入服务。驱动程序在计算机系统中的地位举足轻重,它充当了硬件设备与操作系统之间的媒介,负责对硬件设备发出的指令进行解读和执行,并将操作系统的指令传递给硬件设备。华为上网卡驱动程序的及时更新和精准安装是保障设备稳定运作和性能达到最优的关键因素。"天翼宽带安装程序V1.3.3.exe"是由中国电信提供的一个整合性软件包,内含华为上网卡的驱动程序及配套的管理工具。用户可借助此安装程序来执行华为上网卡的相关驱动安装及更新,同步享受中国电信的3G或4G网络服务。版本标识V1.3.3代表软件经过迭代优化,通常包含了对错误的修正、性能的改善以及新功能的引入。 "SetupInfo.xml"作为安装程序的配置文档,其中收录了安装流程中的各项设定和元数据信息,例如安装流程、文件定位、依赖条件等。它是安装程序在执行时参照和遵循的纲领,旨在确保安装流程按既定方案进行。文件名"CT_HW_EVDO_Driver"或许指向华为的EVDO(Evolution-Data Optimized)驱动程序,EVDO是一种3G无线通信规范,具备高速数据传输的特性。该驱动可...
内容概要:本文围绕【博士论文复现】基于小信号扫频辨识的光伏并网逆变器正负序交互稳定性分析展开,结合Matlab代码与Simulink仿真实现,系统研究了光伏并网逆变器在弱电网环境下的正负序阻抗建模与交互稳定性问题。重点采用小信号扫频法进行系统辨识,获取逆变器的正负序阻抗特性,并通过奈奎斯特稳定判据等方法分析其在不同电网强度下的稳定性表现。文中详细阐述了扫频激励信号的设计原理、频域响应数据的提取与处理流程、阻抗模型的拟合与验证方法等关键技术环节,实现了对逆变器在复杂电网条件下动态交互行为的精确刻画。该研究不仅深入揭示了新能源并网系统中潜在的宽频振荡机理,也为提升系统稳定性、优化控制器设计提供了坚实的理论依据和有效的技术手段。; 适合人群:具备电力电子、自动控制及电力系统基础知识,从事新能源并网、电力系统稳定性研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 掌握基于小信号扫频法的电力电子装置阻抗建模方法;② 深入理解光伏并网逆变器在弱电网下的正负序交互稳定性机理;③ 学习并复现高水平博士论文中的核心仿真技术,提升科研实践能力;④ 为实际工程中新能源并网系统的稳定性分析、振荡问题诊断与控制器优化设计提供理论支持和技术参考。; 阅读建议:学习者应结合提供的Matlab代码与Simulink模型,深入理解扫频辨识的原理与实现步骤,重点关注锁相环、电流控制环等关键模块对系统阻抗特性的影响,并尝试改变系统参数以观察稳定性变化,从而加深对理论知识的掌握。

551

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 茶馆
社区管理员
  • 茶馆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧