引用C ++库函数会导致任务行为不正确

时间:2011-11-26 06:33:33

标签: c++ linker reference task

我有一个包含C文件,C库和C ++库的内核项目。

当构建项目使得主文件(.c)引用其中一个C ++库中的任何函数时,运行的系统会以某种方式损坏,这是任务之一使CPU达到100%并且再也不会放弃了。

所有任务都是健康的(没有HALTED,没有SUSPENDED,没有EXCEPTION),但该任务通过分配CPU来阻止整个系统。

正确调用了C ++库函数,可以通过断点等进行调试。

链接时似乎会出现副作用。

即使引用了C ++库函数,甚至没有调用它,也会出现问题。

使用其他C ++库时没有这样的问题。

您如何解释这一点以及我应该关注哪些要点?

1 个答案:

答案 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 ++运行时支持。 newdelete和例外情况不起作用。有关将C ++代码移植到内核的提示,请参阅此博客article