gpt4 book ai didi

c++ - 以独立方式从 C 调用 C++

转载 作者:行者123 更新时间:2023-11-30 18:19:36 25 4
gpt4 key购买 nike

我有一个用 C++ 编写的内核尝试,我想知道如何将其移植到 x86_64 UEFI,但是使用 GNU-efi 库的 EFI 引导加载程序必须用 C 编写。

如何从C跳转到主内核函数?一直使用 extern C 使得无法使用 C++ 特性,也许可以使用一些汇编代码,或者我可以让引导加载程序调用一个 ELF 文件,该文件将成为带有 ELF 加载程序的主内核。这个解决方案可行吗?

最佳答案

Using extern C all the way makes the use of the C++ characteristics impossible

事实并非如此。在头文件中编写 extern "C" 并使用 C++ 编译器编译函数并在单独的翻译单元中使用各种 C++ 功能是没有问题的。

您只需要避免入口函数的 C++ 实现的 C++ 名称困惑。如果您将 extern "C"用于函数声明,这就是 extern "C" 的作用。

<小时/>

这是一个小例子:

kernel.h

extern "C" void main_entry_point();

kernel.cpp

#include "kernel.h"

void main_entry_point() {
// use std::string, std::vector, etc.
}

bootloader.c

#include "kernel.h"

// call main_entry_point()
main_entry_point();

关于c++ - 以独立方式从 C 调用 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48487035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com