Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果C++函数需要其他库,我如何编译“C++函数”?_C++_C - Fatal编程技术网

如果C++函数需要其他库,我如何编译“C++函数”?

如果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

我在同一文件夹中有以下文件:

函数.h function.cpp main.c

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

#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在代码的适当位置。它正在工作。你是对的。我没有链接静态库。新手失败了。非常感谢。