首页 > 解决方案 > gnu ld 在带有外部 hpp 标头的程序中表示未定义对 'xxx(arg1, arg2)' 的引用

问题描述

只是为了使我的内核源代码更小,我将它溢出到多个头文件中。

(重要的是,它们是 hpp 标头,而不是 h 标头。所以 extern "C" {#include <that_stuff.hpp>} 没有做任何事情。)

链接时,gnu ld 说“未定义对 'xxx(arg1, arg2)' 的引用”

(函数“xxx(arg1,arg2)”在标题中)

怎么修?

标签: header-filesld

解决方案


您的描述似乎是,您没有使用extern "C" { };编译您的 .cc 文件。- 你有没有尝试重新编译?您可以尝试添加前缀extern "C" void xxx(int arg1, int arg2); 在你的头文件中。如果这不起作用,请在源文件中进行相同操作: extern "C" void xxx(int arg1, int arg2) { / code / }

C .o 文件链接不显示函数的参数,只显示名称 - 通常。它可以改变,但据我所知,它就像我写的一样。


推荐阅读