gpt4 book ai didi

c++ - atexit() undefined 与独立的 CLang

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:23:50 29 4
gpt4 key购买 nike

我正在尝试使用 CLang 编译和链接一些 C++ 代码,命令行如下:

clang.exe -nostdinc -MD -fno-use-cxa-atexit -fno-rtti -fno-exceptions -fsigned-char -fno-stack-protector -fPIC -m64 -Wall -Werror -Wno-unused-function -Wno-unused-label -Wno-ignored-attributes

(我省略了输出,包括,定义等。这些都很好)

我遇到的问题是在链接过程中出现错误

error: L0039: reference to undefined symbol `atexit'

我已经在这个问题上花了很多时间,但我似乎无法弄清楚如何正确解决这个问题。

到目前为止,我的研究表明 atexit 是在 stdlib.h 中定义的,但在这种情况下我不能使用标准库(这不是我的决定两者之一,并且对于这个特定项目是完全强制性的)。

据我所知,这个问题现在才出现,因为我们现在的代码中突然有了以这种方式编译的静态对象,这导致编译器尝试注册要为这些执行的 con/destructors对象,这需要调用 __cxa_atexit(我们已将其禁用,因为由于相同的原因它也会给出 undefined reference 错误)或 atexit

我也曾尝试在我的代码中定义一个任意的 atexit 函数,但显然链接器不想与此有任何关系(这对我来说确实很奇怪)。

所以我的问题是:如何让链接器不提示 atexit,同时不必包含标准库?

提前致谢!

最佳答案

对于 future 的访客,用户 damvac能够提供帮助!

这是我对正在解决的问题的评论:

It seems I forgot to add extern "C" to the definition of atexit (I only added it to the declaration), this seems to have resolved the issue! Thanks everyone who replied, and thank you davmac for providing the solution!

关于c++ - atexit() undefined 与独立的 CLang,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22203085/

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