This question already has answers here:
What is an undefined reference/unresolved external symbol error and how do I fix it?
(32个答案)
4年前关闭。
是的,我知道已经有几个问题需要详细说明,但是我觉得我的问题不是特定于细节的。只是有些东西盯着我,但我看不到。
我正在Makefile中一起编译C和C ++文件。在出现标题错误之前,一切似乎都运行良好,该错误与CFile2中的功能有关。
编译工作如下(带有占位符名称):
我的Class.cpp有一个Class.hpp,我的CFile1和CFile2都分别有.h文件。一切都位于同一目录中,并且它们都具有相同的标头保护结构。
我也只在Class.hpp中包括CFile1.h和CFile2.h。仅基于此信息我有什么想念的吗?
您还可以在每个功能之前添加它,如下所示:
(32个答案)
4年前关闭。
是的,我知道已经有几个问题需要详细说明,但是我觉得我的问题不是特定于细节的。只是有些东西盯着我,但我看不到。
我正在Makefile中一起编译C和C ++文件。在出现标题错误之前,一切似乎都运行良好,该错误与CFile2中的功能有关。
编译工作如下(带有占位符名称):
g++ -c main.cpp
g++ -c Class.cpp
gcc -c CFile1.c
gcc -c CFile2.c
g++ main.o Class.o CFile1.o CFile2.o -lcurl
我的Class.cpp有一个Class.hpp,我的CFile1和CFile2都分别有.h文件。一切都位于同一目录中,并且它们都具有相同的标头保护结构。
#ifndef
#define
//Insert function prototypes here
#endif
我也只在Class.hpp中包括CFile1.h和CFile2.h。仅基于此信息我有什么想念的吗?
最佳答案
也许您在c标头中缺少extern "C"
?
如果您编译c文件并希望与c ++链接,则可以添加extern "C"
,但是c编译器无法识别它,因此它必须是#ifdef __cplusplus
在函数减速之前,在标头的开头添加:
#include <stdio> // and all other includes...
#ifdef __cplusplus
extern "C" {
#endif
void funnction_name1(); //sample 1
int funnction_name2(char* p); //sample 2
//must close the extern "C" block
#ifdef __cplusplus
}
#endif
您还可以在每个功能之前添加它,如下所示:
#ifdef __cplusplus
extern "C"
#endif
// no block for the extern "C", so it applied only for a single function
void funnction_name(); //a sample func.
关于c++ - 用于架构x86_64的C++ undefined symbol :中引用的“function_name”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32385631/
10-12 17:22