main.c:(.text+0x30):对"互惠"的未定义引用
main.c:(.text+0x30): undefined reference to `reciprocal'
我正在尝试Advance Linux编程的第一个程序。其他一些人也感觉到了这个问题,但阅读这些帖子对我没有帮助。我也尝试过这些方法,但我的问题仍然存在。请帮帮我。
这是主要的.c
#include <stdio.h>
#include "reciprocal.hpp"
int main(int argc, char const *argv[])
{
int i;
i = atoi(argv[1]);
printf("The reciprocal of %d is %gn", i, reciprocal(i));
return 0;
}
正在列出往复式.cpp
#include <cassert>
#include "reciprocal.hpp"
using namespace std;
double reciprocal(int i) {
//I should not be Zero
assert(i != 0);
return 1.0/i;
}
反向上市.hpp
#ifdef _cplusplus
extern "C" {
#endif
extern double reciprocal (int i);
#ifdef _cplusplus
}
#endif
正在列出Makefile:
reciprocal: main.o reciprocal.o
g++ $(CFLAGS) -o reciprocal main.o reciprocal.o
main.o: main.c reciprocal.hpp
gcc $(CFLAGS) -c main.c -I ../include
reciprocal.o: reciprocal.cpp reciprocal.hpp
g++ $(CFLAGS) -c reciprocal.cpp -I ../include
clean:
rm -f *.o reciprocal
错误为:
rajat$ make
gcc -c main.c -I ../include
g++ -c reciprocal.cpp -I ../include
g++ -o reciprocal main.o reciprocal.o
main.o: In function `main':
main.c:(.text+0x30): undefined reference to `reciprocal'
collect2: error: ld returned 1 exit status
make: *** [reciprocal] Error 1
您的宏中应该有__cplusplus
(正确的宏定义),而不是_cplusplus
。
如何调试:在main.o
:中查找未定义的reciprocal
nm main.o | grep reciprocal
U reciprocal
并在您的reciprocal.o
:中查找
带
__cplusplus
:$ nm reciprocal.o | grep reciprocal 0000000000000000 T reciprocal 0000000000000020 r _ZZ10reciprocalE19__PRETTY_FUNCTION__
无(如您所写的
_cplusplus
):$ nm reciprocal.o | grep reciprocal 0000000000000000 T _Z10reciprocali 0000000000000020 r _ZZ10reciprocaliE19__PRETTY_FUNCTION__
相关文章:
- 编译C++时未定义的引用
- vscode g++链路故障:体系结构x86_64的未定义符号
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 不知道某个东西是否被忽略会引入未定义的行为吗
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 未定义的引用在哪里
- 编译时的 CImg 库返回对"__imp_SetDIBitsToDevice"的未定义引用
- 对Py_Initialize()的未定义引用
- c++11评估顺序(未定义的行为)
- 使用mysql c++连接器的未定义引用
- 从python调用openMP共享库时,未定义opnMP函数
- 在 Mac 上使用 CMAKE 将 FFTW 和 FFTWPP 链接到项目中时未定义的符号
- Cmake 链接问题:未定义对 Button::mousePressEvent(QGraphicsSceneMouseE
- 未定义的引用 .. 使用 OpenCV 编译 C++ 代码时,从命令行
- 具有外部"c"和程序集的未定义函数
- 此增量后语句是否会导致未定义的行为?
- 尝试调用 .h 文件中定义的变量时出现变量未定义错误
- 在C++中使用内联方法时出现未定义的符号错误
- main.c:(.text+0x30):对"互惠"的未定义引用