2

在 c++ 类函数中使用 c 函数时,我遇到了一个令人困惑的问题。

我有一个名为的类A,它A.hA.cpp. 我也有B.h并且B.c已经声明并实现了一些功能。

A函数内部,我调用了在B.hand中定义的函数B.c(没有 class B),我认为这是一个常见的东西,但我得到编译器错误,它说Unresolved reference或其他指向B.

#include "B.h"一开始有A.cpp,我的编译器是Linux下的GCC(opensuse 12.3),很抱歉因为版权问题我不能给你看代码。

这让我很困惑,我不是 C++ 专业人士,但我知道 C++ 头文件和源文件一起工作的方式,所以如果有人对此有类似经验,我只是在寻求帮助。

谢谢

4

3 回答 3

3

你要:

extern "C" {
    #include "B.h";
}
于 2013-08-16T12:53:22.287 回答
3

您需要编译 Bc 并包含其功能

gcc -Wall A.cpp B.c -o my_prog

如果您这样做,请确保将以下守卫添加到 Bh 以避免C 函数的名称修改

#ifdef __cplusplus
extern "C" {
#endif

/* declare your C functions here */

#ifdef __cplusplus
}
#endif
于 2013-08-16T12:54:39.967 回答
0

创建一个单独的标题-> Sh,在其中包含 Ac 和 Bc 的函数()..并将其包含在您想要的任何位置..

或者

对于 C 标准 C 头文件(stdio、stdlib、assert、...)的列表,请在 ac 前面添加并删除 .h。例如 stdio.h 变成 cstdio。

For other headers, use

extern "C"
{
  #include "other_header.h"
}
于 2013-08-16T12:52:55.483 回答