美文网首页
Linux下C++开发动态库so及调用方式

Linux下C++开发动态库so及调用方式

作者: 陈亮2019 | 来源:发表于2020-07-14 13:33 被阅读0次

    对于公共功能,需要将其封在在一个公共库中供其他模块调用,动态链接库是常有的一种方式,在Linux下的C++动态链接库实现及调用简介如下。

    动态链接库功能封装在cpp和h中,定义如下:

    task.h

    void action();

    实现在task.cpp

    #include <iostream>

    using namespace std;

    void action(){

        cout<<"call dll library action."<<endl;

    }

    生成动态链接库命令:

    g++ -fIPC -shared -o libtask.so task.cpp

    -fIPC -shared 是必须的,IPC是指位置无关代码,是动态链接库装入方式。

    .h 中可以看成是接口定义,so中是实现,调用模块源代码中只需要包含.h文件即可,然后就可以使用.h中定义的函数,如下:

    test.cpp

    #include "task.h"

    int main() {

        action();

    }

    编译test.cpp命令行:

    g++ -o test test.cpp libtask.so

    运行test之前需要将libtask.so复制到/usr/lib,或者在LD_LIBRARY_PATH中将当前目录加入其中,否则会报cannot open shared object file: No such file or directory。

    相关文章

      网友评论

          本文标题:Linux下C++开发动态库so及调用方式

          本文链接:https://www.haomeiwen.com/subject/scwxhktx.html