未定义的引用,但链接和包含
Undefined reference, but linked and included
在我的Eclipse C/c++项目中,有这个undefined reference
错误不会消失,不管我做什么。我已经更改了链接顺序,检查了所有的文件是否被编译和包含,基本上都是在互联网上推荐的,当遇到这个问题时。
这是我的程序:
[…-意味着有更多的代码,这是不相关的。
menulib.h
[...]
void start_GUI( void );
[...]
start_GUI.c - 请注意这是一个.c
- file
#include "menulib.h"
void start_GUI( void )
{
[...]
}
coreInterface.h
#ifndef COREINTERFACE_H_
#define COREINTERFACE_H_
#include <stdint.h>
#include <stdlib.h>
#ifdef __cplusplus
/** only include the Core when compiled for C++ */
#include "Core.h"
#endif /* #ifdef CORE */
#ifdef __cplusplus
extern "C" {
#endif
void init_GUI( Core* core);
#ifdef __cplusplus
}
#endif
#endif /* COREINTERFACE_H_ */
coreInterface.cpp - 注意这是一个.cpp
- file
#include "coreInterface.h"
#include "menulib.h"
void init_GUI( Core* core)
{
gui_core = core;
start_GUI(); // <--- **error appears here** - calls a .c file
}
下面是makefile (Eclipse自动生成的)中的错误:
g++ -L/home/PC/the_Project/menu_GUI -o "the_Project" [...] ./menu_GUI/coreInterface.o [...] ./menu_GUI/start_GUI.o [...] -lcurses
./menu_GUI/coreInterface.o: In function `init_GUI':
/home/PC/the_Project/Default/../menu_GUI/coreInterface.cpp:23: undefined reference to `start_GUI()'
我相信这是来自合并.c
和.cpp
文件。我还是解不出来。有人知道吗?
亲切的问候
问题是您在C和c++之间共享menulib.h头文件,而没有向c++编译器指定start_GUI
函数是在C中定义的。在#ifdef中使用extern "C"
不仅用于init_GUI
,还用于start_GUI
。
工作示例:
#include "coreInterface.h"
extern "C" {
#include "menulib.h"
}
void init_GUI( Core* core)
{
gui_core = core;
start_GUI();
}
相关文章:
- C++ 创建包含链表和字符串的对象的链接列表时出错
- 链接列表在 cpp 中包含不同的对象类
- 如果包含映射的静态库与可执行文件和动态库链接,静态映射(变量)是否会被多次释放?
- C++ CURL 库链接器错误,但包含正确的库
- 在Visual Studio C++2017中链接libjpeg-turbo要包含哪些文件
- 包含常量变量并包含在多个文件中的标头的链接错误
- 在 Visual Studio 2010(及更高版本)中定义包含或链接路径变量的位置
- 链接器错误:在包含 .so lib 后未定义对 xxx 的引用
- 未定义的引用,即使库正在链接并且它包含正确的符号
- Godbolt 在 MSVC 上包含 Windows.h 时无法链接?
- 将.init_array部分包含在链接器脚本中会产生不可用的输出
- 我的 RichEdit 控件是否可以包含可单击的链接?
- Android Studio 链接器命令在包含 Boost 库时失败
- 当我无法包含代码所需的头文件时,如何链接 shrared 库?
- 如何在C++中链接包含
- Visual Studio 2013 - 如何在我自己的库中链接/包含其他库
- 将文件从另一个 .vcproj 链接/包含到现有 .vcproj
- 通过符号链接包含共享库会导致未定义的引用
- 库未正确链接/包含
- 为什么Visual Studio在链接包含的文件时会出错