【问题标题】:How to embed Chromium Embedded Framework in C++如何在 C++ 中嵌入 Chromium 嵌入式框架
【发布时间】:2017-06-30 14:49:57
【问题描述】:

我正在 Visual Studio 中创建一个音频软件项目。我想让它跨平台,所以我没有使用winforms,而是开始了空项目。

但我想在前端部分使用 HTML/CSS/JS,为此我在互联网上查找并找到了Sciter。它简单易用,但达不到标准,因为我想使用许多不可用的 html 功能。所以我决定使用chromium embedded framework

但由于我是 C++ 编程的新手,尤其是 Visual Studio,我无法弄清楚我需要将哪些文件导入到我的项目中才能使其正常工作。起初我试图使用源代码,这样可以使它跨平台。但我发现编译源代码非常困难,所以我决定改用.dll 文件。所以我下载了 CEF 的标准 windows x64 发行版。

但我真的很困惑如何将它包含在我的项目中。我看过在线视频,但它们是为 C# 设计的,我使用的是 C++。我也看过 .Net 版本的教程,但由于我没有使用任何 .net 控件或 winforms 库,我对如何使用它生成 GUI 以及与 javascript 交互感到困惑。

我想要的只是一个 CEF 的 kisok 实例,我将在其中使用 c++ 加载 html/css/js(通​​过将字符串值传递给 c++ 函数或 chrome API)。我将使用 Vue.js 库来简化 javascript 部分的操作。以及一些在 javascipt 和 c++ 之间放入和取出数据的方法

我尝试使用CEFSharp,但我惨遭失败并切换回来。 现在我被libcef.dll 和其他此类文件卡住了,我无法理解该怎么做。我无法将include 文件添加到我的项目中。我找不到引用 .dll 文件和所有这些东西的方法。我没有在 c++ 中导入第三方库的经验。

请向我推荐一个资源或一些教程来解决我的问题。 (请不要使用 winforms 或 .net 控件,我想使用本机 c++ 代码完成所有操作,因为稍后我想将其移植到 linux 和 mac)

另外请给我一些建议,以便我可以使这个 CEF 诱导的代码库也可移植到 linux 和 mac。

谢谢。

【问题讨论】:

  • 对于初学者级别的 C++,使用 Qt/QML 可能会更好,它有一个基于 Chromium 的 WebEngine control,如 CEF。因此,您基本上可以获得与 CEF 相同的功能,但在“包含电池”的包中。他们有一个minimal example,看起来非常简单。
  • 我看过QT,但我不想用它,因为这将是一个商业项目,我不愿意在QT上花钱
  • @SoumyaKantiSar:您可以在商业项目中使用 Qt,也可以使用动态链接。见这里:qt.io/licensing-comparison。您只需要确认您所需的功能不属于商用列表。
  • 顺便说一句,它与 CEF 类似,它是 BSD 许可的,但您还必须考虑它所基于的 Chromium 组件的 所有 许可证。在谷歌浏览器中输入chrome://credits 来了解一下。您需要律师来验证所有这些都可以用于特定的商业场景。
  • @Azeem 老实说,我还没有看到 QT 的动态链接,而且由于我是 C++ 新手,我什至不知道动态链接是什么。但这似乎很有希望。

标签: c++ user-interface chromium-embedded


【解决方案1】:

Chromium Embedded Framework 有一个由其开发人员在此处运行的论坛:http://www.magpcss.org/ceforum/index.php。请参阅支持子论坛中的常见问题解答。

有适用于 Windows、OS X 和 linux 的二进制发行版。它们目前由 Spotify 托管:http://opensource.spotify.com/cefbuilds/index.html

提供的 CEF3 文件是本机 C++ 而不是 .Net。有一个 CEFSharp 项目为 .Net 包装了 CEF3,但它适用于 C#。

大多数人开始使用 CEFSimple 或(功能更齐全的)包含的 CEFClient 示例应用程序。这些编写的应用程序与不同的操作系统兼容。这些作为源代码提供,可与已编译的 Chromium + CEF3 DLL 一起使用。

例如,您启动一​​个新的 Visual Studio 项目并复制 CEFSimple 文件,并链接到 CEF3 DLL 的 .lib。按照现有逻辑分离出特定于操作系统的部分。

在原生 C++ 的 Windows 中,链接器在构建您的 EXE 时使用 .lib 文件(请参阅 Linking : .a, .lib and .def files):

Linker - Input   (edit paths to match where you copied the binary files)
..\..\cef_binary_3\Release\libcef.lib
..\..\cef_binary_3\build\libcef_dll_wrapper\Release\libcef_dll_wrapper.lib

为了分发您的应用程序,您包括您的 EXE、DLL、.PAK 文件和 2 个 _blob.bin 文件。来自 CEFClient 示例二进制版本的所有文件,除了相同的 .EXE。是的,压缩后的大小确实是 50+ MB!这是因为与 Microsoft 的 IE Web 控件不同,浏览器的任何部分都不包含在操作系统中。

在 CEF 论坛中搜索有关运行全屏模式的提示。对于 Windows,这意味着在创建主浏览器窗口时更改窗口样式位 WS_ 和 WS_EX。

【讨论】:

  • 如果我错了,请纠正我,但我认为 .dll 文件是随二进制发行版一起提供的,那么为什么我需要一个额外的 .lib,我想要尽可能最小和最简单的集成。而且我不理解您的这一行“按照现有逻辑分离出特定于操作系统的部分”。由于我是链接库的新手,请原谅我,但我不了解动态和静态链接,也不了解如何链接。
  • 即使对于 DLL,也需要 LIB 文件来加载 DLL 并链接到它的函数。请参阅上面的修改。
  • 自述文件或常见问题解答链接显示了如何为 CEFClient / Simple 创建 Visual Studio 项目,以便您可以从源代码再次构建它们并尝试就地修改它们。
猜你喜欢
  • 2011-12-23
  • 2023-03-04
  • 2014-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-28
相关资源
最近更新 更多