gpt4 book ai didi

c++ - 如果 C++ 函数需要其他库,我该如何编译 "c++ functions from c"?

转载 作者:太空宇宙 更新时间:2023-11-04 04:43:28 25 4
gpt4 key购买 nike

我在同一个文件夹中有这些文件:

函数.h
函数.cpp
主程序

如果我有一个像 sum(int a){return a+a;} 这样的简单函数(在 function.cpp 中),我可以编译它,但我需要使用一个库像这样:

#include "something.hh"
void function(){
ClassX* test;
...
}

问题是,当我尝试编译它时,我在每个类中都得到“ undefined reference ”。

我应该如何编译它?这可能吗?我在某处读到过,您可以在 C 中使用 C++ 函数,而它的返回类型和参数可从 C 访问。还有其他要求吗?

我的工作:

g++ -c -I /folder/include  function.cpp -o function.o
gcc -c main.c -o main.o
gcc main.o function.o -o exec

在 function.cpp 中未定义对 ClassX 的引用

最佳答案

我认为你的问题不是使用 C 和 C++,而是包含整个 ClassX 的文件没有被编译,因此在链接时间的第三阶段它给出了错误

gcc main.o function.o -o exec

确保在一个 .o 文件中定义了 ClassX,并且该文件已在上述步骤中传递。

现在回答你的问题,你不能编译 C++ 代码是 C 编译器,因为 C 不向前兼容,但 C++ 向后兼容 C,也就是说大部分 C 代码将由 C++ 编译器编译,几乎没有变化。但是您可以用 c 编写一个库或将 c 代码编译为 .o,然后在 C++ 编译器中使用它来执行此操作,您需要使用 extern "C"链接。

extern "C"
{
....
}

检查这个link

谢谢

关于c++ - 如果 C++ 函数需要其他库,我该如何编译 "c++ functions from c"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23676176/

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