gpt4 book ai didi

C/C++ : Proper places to use extern for my library?

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

我正在制作一个共享库,其函数在构建时的链接期间(以及与测试程序的链接)仍然未定义,现在我已经了解了名称修改以及为什么它会导致类似的情况。

我假设在 libfoo.h header 中我会放入:

#ifdef __cplusplus
extern "C" {
#endif
int foobar();
#ifdef __cplusplus
}
#endif

原型(prototype)的 extern 是否就是我需要应用它们的全部,或者我是否需要将它们包装在 libfoo.c 中的函数声明中,以便我的 C++ 程序可以读取它们?

更新以下评论:

链接错误是这样的:

g++ prototypes.cxx -L/usr/lib/  -lfoo
/tmp/ccKQmen4.o: In function `main':
prototypes.cxx:(.text+0x19): undefined reference to `foobar()'
collect2: ld returned 1 exit status

最佳答案

您不必对源代码进行任何操作,只要使用 C 编译器对其进行编译即可。

这就是您在 header 中告诉 C++ 编译器的内容 - 使用 C 调用和命名约定。

关于C/C++ : Proper places to use extern for my library?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5468985/

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