【问题标题】:DLL-s using C++ on Linux在 Linux 上使用 C++ 的 DLL-s
【发布时间】:2008-09-28 12:32:07
【问题描述】:

我试图找到如何使用 google 在 linux 上创建 DLL-s,但得到的信息非常混乱。

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

【问题讨论】:

    标签: linux gcc shared-libraries


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      例如。

      
      gcc -shared -o libfoo.so foo.c
      

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

      即。

      
      ld -o a.out -lfoo someobject.o 
      

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

      【讨论】:

        【解决方案3】:

        很多如果您刚刚开始,但在某些时候您需要参考 Ulrich Drepper 的“How To Write Shared Libaries”。

        【讨论】:

        • 一个非常有趣的文档。如果您正在编写一个主要的库框架,或者如果您有启动时间问题,则必不可少,否则可能没有用,但如果您是那种喜欢了解实际情况的人,仍然值得一读。
        【解决方案4】:

        我猜 .SO 文件而不是 DLL 文件,意思是共享对象,而不是 StackOverflow :),是你想要的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-10-16
          • 2012-02-26
          • 1970-01-01
          • 1970-01-01
          • 2017-05-03
          • 2022-01-23
          • 1970-01-01
          • 2011-11-10
          相关资源
          最近更新 更多