gpt4 book ai didi

c++ - undefined reference ,但链接并包含

转载 作者:太空宇宙 更新时间:2023-11-04 06:27:17 24 4
gpt4 key购买 nike

在我的 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 header ,而没有向 C++ 编译器指定函数 start_GUI 是在 C 中定义的。使用 extern "C" 在 #ifdef 中不仅用于 init_GUI,还用于 start_GUI

关于c++ - undefined reference ,但链接并包含,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25263992/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com