我有一个包含C文件,C库和C ++库的内核项目。
当构建项目使得主文件(.c)引用其中一个C ++库中的任何函数时,运行的系统会以某种方式损坏,这是任务之一使CPU达到100%并且再也不会放弃了。
所有任务都是健康的(没有HALTED,没有SUSPENDED,没有EXCEPTION),但该任务通过分配CPU来阻止整个系统。
正确调用了C ++库函数,可以通过断点等进行调试。
链接时似乎会出现副作用。
即使引用了C ++库函数,甚至没有调用它,也会出现问题。
使用其他C ++库时没有这样的问题。
您如何解释这一点以及我应该关注哪些要点?
答案 0 :(得分:1)
您的C ++库是否使用extern "C"
构造声明了它们的功能?见这个常见问题:
(32.6) How can I create a C++ function f(int,char,float) that is callable by my C code?
如果您希望C和C ++都可以使用相同的C API头文件,则可以使用以下常见技巧:
#ifdef __cplusplus
extern "C"
{
#endif
// Function prototypes
#ifdef __cplusplus
} // Closes the extern "C" brace
#endif
内核中没有C ++运行时支持。 new
,delete
和例外情况不起作用。有关将C ++代码移植到内核的提示,请参阅此博客article。