int main( int argv, char** argc ) { cout<<"now call function in static lib"<<endl; cout<<"add result:"<<math_add(2,3)<<endl; cout<<"sub result:"<<math_sub(3,2)<<endl; }
接下来我们编译main.cpp
g++ -Wall -o main ../lib/libstatic.a.1 ../lib/libdynamic.so.1 main.cpp
结果出错了:
undefined reference to 'math_add(int, int)'
math_add是staticlib.cpp中函数,怎么找不到呢?好,先用:
nm ../lib/libstatic.a.1
查看一下,发现有导出这个函数啊。
我换一个顺序吧:
g++ -Wall -o main main.cpp ../lib/libstatic.a.1 ../lib/libdynamic.so.1
结果成功了。
我百思不得其解,如果有高人路过,请指点。
接下来,我们使用另外一种方式编译:
g++ -Wall -o main main.cpp -L../lib/ -ldynamic -lstatic