Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 未定义的引用,但链接并包含_C++_C_Eclipse_Gcc_Linker - Fatal编程技术网

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"

在我的EclipseC/C++项目中,有一个
未定义的引用
错误不会消失,不管我做什么。我已经改变了链接顺序,检查了是否所有的文件都被编译和包含,基本上所有的东西,这是在互联网上推荐的,当面对这个问题时

这是我的节目

[…]-意味着有更多的代码,而这些代码并不相关

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中。但是,对于StasuGui < P>问题是,在C和C++之间共享MeNuL.H头,而不指定C++编译器,函数C <代码> StasgGUI <代码>定义在C中。使用<代码>外部“C”<代码>,不仅在<代码> > IITUGUI >代码>,而且对于<代码> StistGuGue>代码> .< /P> < P>工作示例:

#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();           
}