在Linux下进行C++动态链接库(DLL)开发,通常使用的是共享对象(Shared Object),其扩展名为.so
。以下是创建和使用共享对象库的基本步骤:
首先,你需要编写一些C++源文件,这些文件将包含你想要封装在共享库中的函数和类。
例如,创建一个名为hello.cpp
的文件:
// hello.cpp
#include <iostream>
extern "C" {
void hello_from_so() {
std::cout << "Hello from shared object!" << std::endl;
}
}
注意:使用extern "C"
是为了防止C++编译器对函数名进行名称改编(name mangling),这样其他语言或程序才能正确地链接到这个函数。
使用g++
编译器将源代码编译成对象文件(.o
):
g++ -fPIC -c hello.cpp
-fPIC
选项告诉编译器生成位置无关代码(Position Independent Code),这是创建共享库所必需的。
将对象文件打包成共享对象库:
g++ -shared -o libhello.so hello.o
这将在当前目录下创建一个名为libhello.so
的共享对象库。
要在另一个程序中使用这个共享库,你需要:
/usr/local/lib
或者项目的lib
目录下。ldconfig
命令。-L
选项指定库路径,使用-l
选项指定库名(不需要lib
前缀和.so
后缀)。例如,创建一个名为main.cpp
的文件来使用共享库:
// main.cpp
extern "C" {
void hello_from_so();
}
int main() {
hello_from_so();
return 0;
}
编译并运行程序:
g++ -o main main.cpp -L/path/to/your/library -lhello
export LD_LIBRARY_PATH=/path/to/your/library:$LD_LIBRARY_PATH
./main
这里/path/to/your/library
是你存放libhello.so
的路径。
如果你想删除共享库和对象文件,可以使用以下命令:
rm libhello.so hello.o
以上就是在Linux下进行C++动态链接库开发的基本步骤。记得在分发你的库时提供相应的头文件和安装脚本,以便用户能够更容易地集成和使用你的库。