g++做的静态库,连接时报错
做了一个测试的例子,但是老是报错,请高手帮着看看
fun.h
-----------
#include <stdio.h>
#include <stdlib.h>
class cfun
{
public:
cfun();
virtual ~cfun();
void funadd(int a, int b);
};
------------
fun.cpp
------------
#include <fun.h>
cfun::cfun()
{
}
cfun::~cfun()
{
}
void cfun::funadd(int a, int b)
{
printf("a + b = %d\n", a + b);
}
------------
t1.cpp
------------
#include <fun.h>
int main(int avg, char * cvg[])
{
cfun c1;
c1.funadd(1, 2);
return 0;
}
------------
我使用g++生成fun的库
g++ -c -I./ fun.cpp
ar rcs libfun.a fun.o
使用libfun.a时出错了
g++ -I./ -L./ -lfun t1.cpp -o t1
/tmp/ccGVwhPY.o: In function `main':
t1.cpp:(.text+0x19): undefined reference to `cfun::cfun()'
t1.cpp:(.text+0x34): undefined reference to `cfun::funadd(int, int)'
t1.cpp:(.text+0x44): undefined reference to `cfun::~cfun()'
t1.cpp:(.text+0x5a): undefined reference to `cfun::~cfun()'
collect2: ld 返回 1
但如果使用的
g++ -I./ t1.cpp ./libfun.a -o t1
就可以
问题:为什么我不能创建静态库的方法使用呢?