首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

HI 大牛们,为何编译能通过,链接通不过呢

2013-03-16 
HI 大牛们,为啥编译能通过,链接通不过呢make[1]: 正在进入目录 `/home/administrator/myproj/systemmake[

HI 大牛们,为啥编译能通过,链接通不过呢
make[1]: 正在进入目录 `/home/administrator/myproj/system'
make[2]: 正在进入目录 `/home/administrator/myproj/system/device'
g++ -O0 -I../../include -I../../ui -c device.cpp device.h 
make[2]:正在离开目录 `/home/administrator/myproj/system/device'
make[2]: 正在进入目录 `/home/administrator/myproj/system/input'
g++ -O0 -I../../include -I../../ui -c input.cpp input.h 
make[2]:正在离开目录 `/home/administrator/myproj/system/input'
make[2]: 正在进入目录 `/home/administrator/myproj/system/msg'
g++ -O0 -I../../include -c msg.cpp msg.h 
make[2]:正在离开目录 `/home/administrator/myproj/system/msg'
ar -cr system.a device/*.o input/*.o msg/*.o
make[1]:正在离开目录 `/home/administrator/myproj/system'
make[1]: 正在进入目录 `/home/administrator/myproj/ui'
g++ -c view.cpp -I../include 
ar -cr ui.a ./*.o
make[1]:正在离开目录 `/home/administrator/myproj/ui'
make[1]: 正在进入目录 `/home/administrator/myproj/project'
g++ -O0 -I../include -I../ui -I../system -c nav_view.cpp nav_view.h 
ar -cr project.a ./*.o
make[1]:正在离开目录 `/home/administrator/myproj/project'
#link LIBS
g++ main.cpp -Iinclude -Iui ui/ui.a project/project.a system/system.a -lpthread -o main
system/system.a(device.o):在函数‘__static_initialization_and_destruction_0(int, int)’中:
device.cpp:(.text+0x85a):对‘nav_view::nav_view()’未定义的引用
device.cpp:(.text+0x871):对‘nav_view::~nav_view()’未定义的引用
collect2: 错误: ld 返回 1
make: *** [all] 错误 1


device类中有一个nav_view的对象,此对象是device的静态成员,编译都能通过,链接却提示说nav_view的构造函数未定义,事实上是有定义的。为啥?

[解决办法]


//g++ main.cpp -Iinclude -Iui ui/ui.a project/project.a system/system.a -lpthread -o main
g++ main.cpp -Iinclude -Iui ui/ui.a project/project.a system/system.a  nav_view.o -lpthread -o main

[解决办法]
system.a里引用了project.a里的东西?
试试改一下链接顺序吧project.a放到system.a后面
g++ -o main main.cpp -Iinclude -Iui ui/ui.a system/system.a project/project.a -lpthread

热点排行