gpt4 book ai didi

c++ - MAC 操作系统上的链接错误

转载 作者:行者123 更新时间:2023-11-30 18:09:04 28 4
gpt4 key购买 nike

我对 MAC 操作系统不太熟悉,但是在 MAC OS X 上使用 g++ 构建 cpp 应用程序时,我从链接器中收到了奇怪的错误。

首先,我使用从 cpp 源生成的多个目标文件创建一个库,然后使用 ar rvs 命令创建一个存档。

如果我将此库链接到另一个使用该库提供的某些类的 cpp 应用程序,它无法在链接时获取某些符号并引发 undefined symbol 错误。

我知道并且我能够使用 nm 在库中看到这些符号。并且签名和字符串与 .a 文件中的方式完全匹配。

还有许多其他符号,该库提供并在链接时被识别。

用于链接的选项是

      g++-framework IOKit -framework Carbon -L <> -l<lib>-L -l<lib> -o exe ./obj.o

and other是使用-L的其他库的几个路径

我不是 MAC 方面的专家,但是成员们的任何建议都会受到重视。

提前致谢

-brij

最佳答案

链接时需要将目标文件(obj.o)放在库之前。

这样做的原因是,在处理对象时,链接器会保留 undefined symbol 的列表。当它处理库时,它会添加在库中找到的任何当前 undefined symbol (从技术上讲,它在库中的对象级别上工作)。通过将库放在前面,处理符号时不会有 undefined symbol ,因此不会添加库中的对象。

关于c++ - MAC 操作系统上的链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2859751/

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