猿问

Linux上的C ++动态共享库

Linux上的C ++动态共享库

这是使用g ++进行动态共享库编译的后续操作。

我正在尝试在Linux上用C ++创建一个共享类库。我能够编译库,我可以使用我在这里和这里找到的教程调用一些(非类)函数。当我尝试使用库中定义的类时,我的问题开始了。我链接的第二个教程展示了如何加载符号来创建库中定义的类的对象,但是没有使用这些对象来完成任何工作。

有没有人知道有关创建共享C ++类库的更完整的教程,该教程还展示了如何在单独的可执行文件中使用这些类?一个非常简单的教程,显示对象创建,使用(简单的getter和setter会很好),删除将是太棒了。一些链接或对一些开源代码的引用说明了共享类库的使用同样好。


虽然codelogic和nimrodm的答案确实有效,但我只是想补充一下,自从提出这个问题以来,我选择了初学Linux编程的副本,其第一章有示例C代码以及创建和使用静态和共享库的良好解释。这些示例可通过旧书版本中的 Google图书搜索获得。


精慕HU
浏览 559回答 3
3回答

Qyouu

基本上,您应该在要在共享库中使用该类的代码中包含类的头文件。然后,在链接时,使用'-l'标志将代码链接到共享库。当然,这要求.so是操作系统可以找到它的地方。见3.5。安装和使用共享库使用dlsym是为了在编译时不知道要使用哪个库。这听起来不像是这样的情况。也许混淆是Windows调用动态加载的库,无论你是在编译还是运行时进行链接(使用类似的方法)?如果是这样,那么你可以认为dlsym相当于LoadLibrary。如果你真的需要动态加载库(即它们是插件),那么这个FAQ应该有所帮助。
随时随地看视频慕课网APP
我要回答