请问什么是未定义的引用 / 未解析的外部符号错误,该如何修复它?
5条回答 默认 最新
- weixin_38166163 2019-07-24 11:23关注
指定相互依赖的链接库的顺序是错误的
如果library之间相互依赖,那么library链接的顺序确实很重要。 一般来说,如果 a 依赖于 b,那么 libA 必须出现在链接器标志中的 libB 之前。
例如:// B.h#ifndef B_H#define B_H struct B { B(int); int x;}; #endif // B.cpp#include "B.h" B::B(int xx) : x(xx) {} // A.h#include "B.h" struct A { A(int x); B b;}; // A.cpp#include "A.h" A::A(int x) : b(x) {} // main.cpp#include "A.h" int main() { A a(5); return 0;};
创建库:
$ g++ -c A.cpp $ g++ -c B.cpp $ ar rvs libA.a A.o ar: creating libA.a a - A.o $ ar rvs libB.a B.o ar: creating libB.a a - B.o
编译:
$ g++ main.cpp -L. -lB -lA./libA.a(A.o): In function `A::A(int)': A.cpp:(.text+0x1c): undefined reference to `B::B(int)' collect2: error: ld returned 1 exit status $ g++ main.cpp -L. -lA -lB $ ./a.out
所以再重复一遍,顺序确实很重要!
解决 无用评论 打赏 举报
悬赏问题
- ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
- ¥15 gradio的web端页面格式不对的问题
- ¥15 求大家看看Nonce如何配置
- ¥15 Matlab怎么求解含参的二重积分?
- ¥15 苹果手机突然连不上wifi了?
- ¥15 cgictest.cgi文件无法访问
- ¥20 删除和修改功能无法调用
- ¥15 kafka topic 所有分副本数修改
- ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
- ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?