【发布时间】:2018-04-13 23:41:51
【问题描述】:
我正在尝试从 C 文件调用 C++ 函数。 所以我将该函数声明为 extern "C" 并在 C 文件中声明它。 从 cpp 文件创建了一个目标文件,我们称之为 cpp_object.o,然后为 main.c 创建一个目标文件。
我可以使用 g++ 链接它们并不是那么明显。不,main 调用了一些 c 库,所以我无法将它们与 g++ 链接。所以我必须将它们与 gcc 链接起来。 我尝试了以下方法:
main: main.o cpp_object.o
${CROSS}${CC} $^ -o $@ ${LDFLAGS}
显示目标文件找不到 C++ 标准库的错误。我不知道发生了什么。谷歌搜索它尝试了以下方法:
main: main.o get_config.o
${CROSS}${CC} $^ -o $@ ${LDFLAGS} -lstdc++
然后它起作用了!?这是否意味着 gcc 使用 c++ stdlib 编译代码?但是我有点困惑,我们需要如何用 c++ stl 编译 C 代码?
所以这真的是我想要的吗?还是我错过了什么?
【问题讨论】:
-
为什么你认为 C 代码需要 C++ STL?假设 C++ 函数需要 C++ STL 更有意义。
-
@nwp 嗨。我想说的是C文件调用的C++函数需要stl。但我的问题是这个选项是否意味着 gcc 用 stl 编译 C 代码?
-
main.o不是 C 代码。您是在链接,而不是在编译。