找回密码
 立即注册
收起左侧

Qt 项目共享库的调用

2
回复
6845
查看
[复制链接]
累计签到:3 天
连续签到:2 天
来源: 2019-1-4 20:04:46 显示全部楼层 |阅读模式
1Qter豆
1.有这样两个共享库分别为Lib1和Lib2,和一个控制台程序Test
2.Lib1里面有这样1个函数 void add(int param1,int param2,int &result);
  Lib2里面有这样1个函数 void sum(int param1,int param2,int &result);
  其中Lib2中的sum函数调用Lib1中的add函数;在控制台Test程序中调用Lib2
  在Lib2中添加了库Lib1的引用,库指向Lib1生成的.so文件,包含目录指向Lib1的源代码目录(Lib1.h所在的文件夹)
  在Test中添加了库Lib2的引用,库指向Lib2生成的.so文件,包含目录指向Lib2的源代码目录(Lib2.h所在的文件夹)

按照顺序构建
Lib1 通过
Lib2 通过
Test 不通过

undefined reference to 'add(int ,int ,int&)'

collect2:error:ld returned 1 exit status





Lib1.h
     #ifndef LIB1_H
    #define LIB1_H
    void add(int param1,int param2,int &result);
    #endif // LIB1_H
Lib1.cpp
     #include"Lib1.h"
     void add(int param1,int param2,int &result)
    {
     result=param1+param2;
    }

Lib2.h
     #ifndef LIB2_H
    #define LIB2_H
    void sum(int param1,int param2,int &result);
    #endif // LIB2_H
Lib2.cpp
     #include"Lib2.h"
     #inlcude"Lib1.h"
     void sum(int param1,int param2,int &result)
    {
     add(param1,param2,result);
    }


在Test控制台程序中
main.cpp
#include <QCoreApplication>
#include <QDebug>
#include "Lib2.h"
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    int p1=1000;
   int p2=10;
   int p3=-1;
   sum(p1,p2,p3);
   qDebug()<<p3;
    return a.exec();
}


编译一直不行



回复

使用道具 举报

累计签到:41 天
连续签到:1 天
2019-1-5 21:37:20 显示全部楼层
在Test的pro中添加对lib1的引用试试。
回复

使用道具 举报

累计签到:742 天
连续签到:1 天
2019-1-7 09:41:30 显示全部楼层
库的引用关键在于 pro 文件的书写,你居然不放上来 ~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了