如果C++函数需要其他库,我如何编译“C++函数”?
我在同一文件夹中有以下文件: 函数.h function.cpp main.c 如果我在function.cpp中有一个像sumint a{return a+a;}这样的简单函数,我可以编译它,但我需要使用如下库:如果C++函数需要其他库,我如何编译“C++函数”?,c++,c,C++,C,我在同一文件夹中有以下文件: 函数.h function.cpp main.c 如果我在function.cpp中有一个像sumint a{return a+a;}这样的简单函数,我可以编译它,但我需要使用如下库: #include "something.hh" void function(){ ClassX* test; ... } 问题是,当我试图编译它时,我在每个类中都会得到未定义的引用 我应该如何编译这个? 这可能吗?我读过C++中的C++函数,而它的返回类型及其参数是从C
#include "something.hh"
void function(){
ClassX* test;
...
}
问题是,当我试图编译它时,我在每个类中都会得到未定义的引用
我应该如何编译这个?
这可能吗?我读过C++中的C++函数,而它的返回类型及其参数是从C.访问的,还有其他的要求吗?p>
我所做的:
g++ -c -I /folder/include function.cpp -o function.o
gcc -c main.c -o main.o
gcc main.o function.o -o exec
在Copy.PcP未定义的引用到Cxx
< P>我认为你的问题不是C和C++使用的,但是包含整个ClassX的文件没有编译,因此在链接的第三个阶段,它给出了错误gcc main.o function.o -o exec
确保ClassX是在一个.o文件中定义的,并且该文件是在上述步骤中传递的
现在来问你的问题,
不能编译C++代码是C编译器,因为C不是前向兼容的,但是C++是向后兼容的,也就是说,大多数C代码将由C++编译器编译而没有什么变化。但是你可以在C中编写一个库或者编译C代码到.O,然后在C++编译器中使用它,这样就需要使用ExtC连接。
extern "C"
{
....
}
检查这个
谢谢
我应该如何编译这个?这可能吗
通常有两种可能性:
仅根据函数定义头文件API,使用extern C链接声明这些函数,并在C代码中使用它们
如果你有类声明或其他C++特定代码,将你的客户端代码编译成C++,即移动Maun.C到Maun.CPP ./P> 在您的情况下,您试图访问C++类中的C++代码。这是不可能的
您仍然可以使用该功能,但您必须创建一个适应层,其中API声明为外部C,声明没有类、模板或其他C++特性。在这个适应层中,类或其他C++构造可以隐藏在客户端代码不透明的结构中。< /P>谷歌C++名称的修改和插入外部C在代码的适当位置。它正在工作。你是对的。我没有链接静态库。新手失败了。非常感谢。