gpt4 book ai didi

c - 为什么包含带有外部变量和函数的 h 文件会导致 undefined reference

转载 作者:太空狗 更新时间:2023-10-29 11:44:49 27 4
gpt4 key购买 nike

如果我希望使用 dlopen 在运行时解析这些外部因素怎么办?

我试图理解为什么将带有共享库外部变量和函数的 h 文件包含到 C 可执行程序中会导致未定义/未解析。 (链接时)

如果我只想在运行时解析这些符号,为什么我必须向 gcc 链接添加“-lsomelib”标志。

链接时间链接器需要这些定义解析的目的是什么。为什么使用dlopen时不能等待运行时解析。

谁能帮我理解一下?

最佳答案

这里有一些可能有助于理解的东西:有 3 种类型的链接:

  • 静态链接 (.a):编译器在链接时将库的内容包含到您的代码中,以便您可以将代码移动到具有相同架构的其他计算机并运行它。
  • 动态链接(.so):编译器在链接时(编译期间)解析符号;但在您的可执行文件中不包含库的代码。当程序启动时,库被加载。如果找不到库,程序就会停止。您需要运行程序的计算机上的库
  • 动态加载:你负责在运行时加载库函数,使用dlopen等,专门用于插件

另请参阅:http://www.ibm.com/developerworks/library/l-dynamic-libraries/Difference between shared objects (.so), static libraries (.a), and DLL's (.so)?

关于c - 为什么包含带有外部变量和函数的 h 文件会导致 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22795558/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com