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

2020-07-14  本文已影响0人  陈亮2019

对于公共功能,需要将其封在在一个公共库中供其他模块调用,动态链接库是常有的一种方式,在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。

上一篇下一篇

猜你喜欢

热点阅读