DLL在Linux上使用C++

sla*_*ais 2 linux gcc shared-libraries

我试图找到如何使用谷歌在Linux上创建DLL-s,但获得了非常令人困惑的信息.

是否可以在linux上编写动态链接库?如果没有,是否还有其他方法可以从多个正在运行的程序中调用另一个模块中的代码?

Skl*_*vvz 14

那是因为DLL是一个Windows术语.在Linux中,它们被称为共享库.

http://www.linux.org/docs/ldp/howto/Program-Library-HOWTO/shared-libraries.html


And*_*mbe 7

正如Sklivvz所说,你在linux上的术语是共享对象.这些是文件扩展名.so.

使用gcc,您可以.so使用该-shared选项创建一个.

例如.


gcc -shared -o libfoo.so foo.c

如果您将共享对象命名为lib*.so,则可以使用-l链接器上的选项对其进行编译.注意,在这种情况下推断出"lib".

即.


ld -o a.out -lfoo someobject.o 
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用dlopen()和dlsym().so在运行时加载文件,就像使用.dlls一样.