C++ 未定义的引用,但链接并包含
在我的EclipseC/C++项目中,有一个C++ 未定义的引用,但链接并包含,c++,c,eclipse,gcc,linker,C++,C,Eclipse,Gcc,Linker,在我的EclipseC/C++项目中,有一个未定义的引用错误不会消失,不管我做什么。我已经改变了链接顺序,检查了是否所有的文件都被编译和包含,基本上所有的东西,这是在互联网上推荐的,当面对这个问题时 这是我的节目: […]-意味着有更多的代码,而这些代码并不相关 menulib.h start_GUI.c-注意这是一个.c-文件 #include "menulib.h" void start_GUI( void ) { [...] } #include "coreInterface.h"
未定义的引用
错误不会消失,不管我做什么。我已经改变了链接顺序,检查了是否所有的文件都被编译和包含,基本上所有的东西,这是在互联网上推荐的,当面对这个问题时
这是我的节目:
[…]-意味着有更多的代码,而这些代码并不相关
menulib.h
start_GUI.c-注意这是一个.c
-文件
#include "menulib.h"
void start_GUI( void )
{
[...]
}
#include "coreInterface.h"
#include "menulib.h"
void init_GUI( Core* core)
{
gui_core = core;
start_GUI(); // <--- **error appears here** - calls a .c file
}
coreInterface.h
以下是makefile中的错误(Eclipse自动生成的错误):
我相信这是通过合并.c
和.cpp
文件实现的。但我还是无法解决它。有人有主意吗
<> P> > < < /P> > P>问题是,在C和C++之间共享MeNuR.H头,而不指定C++编译器,函数C <代码> STARTGUIG/<代码>定义在C中。但是,对于
#include "coreInterface.h"
extern "C" {
#include "menulib.h"
}
void init_GUI( Core* core)
{
gui_core = core;
start_GUI();
}
工作示例:
#include "coreInterface.h"
extern "C" {
#include "menulib.h"
}
void init_GUI( Core* core)
{
gui_core = core;
start_GUI();
}
如果我在
menulib.h
中用extern“C”{…}
包围start\u GUI
,我会得到一个不同的错误:expected identifier或»(«before string constant
当你说“我得到一个错误”时)总是在你看到它的地方,否则就不可能帮助你。编译C文件或C++文件时报告的错误也一样吗?如果我在menulib.h中用extern“C”{…}
包围start\u GUI
,在menulib.h
中更改类似@massimocata的代码时,问题就解决了。我得到一个不同的错误:预期标识符或»(在字符串常量
进入menulib.h而不是coreInterface.cpp-当更改@MassimoCosta这样的代码时,问题就解决了。它不可能工作,我看了几个小时它不可能工作,我看了几个小时
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()'
#include "coreInterface.h"
extern "C" {
#include "menulib.h"
}
void init_GUI( Core* core)
{
gui_core = core;
start_GUI();
}