header-files - gnu ld 在带有外部 hpp 标头的程序中表示未定义对 'xxx(arg1, arg2)' 的引用
问题描述
只是为了使我的内核源代码更小,我将它溢出到多个头文件中。
(重要的是,它们是 hpp 标头,而不是 h 标头。所以 extern "C" {#include <that_stuff.hpp>} 没有做任何事情。)
链接时,gnu ld 说“未定义对 'xxx(arg1, arg2)' 的引用”
(函数“xxx(arg1,arg2)”在标题中)
怎么修?
解决方案
您的描述似乎是,您没有使用extern "C" { };编译您的 .cc 文件。- 你有没有尝试重新编译?您可以尝试添加前缀extern "C" void xxx(int arg1, int arg2); 在你的头文件中。如果这不起作用,请在源文件中进行相同操作: extern "C" void xxx(int arg1, int arg2) { / code / }
C .o 文件链接不显示函数的参数,只显示名称 - 通常。它可以改变,但据我所知,它就像我写的一样。
推荐阅读
- angular - 根据从 Okta Angular 8 收到的标志路由用户
- python - 如何处理线性回归中的日期字段
- excel - 在excel中计算单元格区域中超过2个字符的单词数
- nginx - 在闪亮的服务器不工作的情况下,在 NGINX 中将 HTTP 重定向到 HTTPS
- javascript - jQuery:如何在文件上传后启用保存 btn
- java - 安装没有成功。无法安装应用程序。APK列表
- c++ - 如何在 C++ 中解决循环依赖
- r - 如何使 R Studio Server 加载时间更快?
- mongodb - MongoDB 到其他数据库同步
- reactjs - React 应用程序 - 编译错误 - jest-diff/build/diffLines.d.ts(8,13): '=' 预期