我正在使用OpenGL在C/C++中编写图形程序。我有一堆.c文件,现在我正在从assignment1gui.c中的main.cpp中调用一个函数。老师给了我一个带有编译代码的文件。它看起来像这样:从另一个C文件调用函数
OBJS = assignment1gui.o shadertools.o main.o
TARGET = ass1
CXX = gcc
DBFLAGS = -O0 -g3 -ggdb3 -fno-inline
WFLAGS = -Wall -ansi
GLFLAGS = `pkg-config --cflags gtk+-2.0`
LGLFLAGS = `pkg-config --libs gtk+-2.0` -lGL -lGLEW -lGLU -lglut
CXXFLAGS = $(WFLAGS) $(DFLAGS) $(GLFLAGS)
LDFLAGS = -export-dynamic -lXext -lX11 $(LGLFLAGS)
all: $(TARGET)
clean:
rm -f $(OBJS) $(TARGET)
.SUFFIXES: .cc
.cc.o:
$(CXX) -c $(CXXFLAGS) $<
.c.o:
$(CXX) -c $(CXXFLAGS) $<
$(TARGET): $(OBJS)
$(CXX) -o $(TARGET) $(OBJS) $(LDFLAGS)
我试图调用的函数是“drawPloygonLine()”。我在“assignment1gui.h”中声明了这个,正如我前面提到的那样,定义在main.cpp中。
从互联网上的所有帮助中,我意识到编译代码必须有一些问题。但我不确定。有人可以帮我吗?
对不起,我早先忽略了这部分。我得到的错误是:
assignment1gui.o: In function `on_btn_color_color_set':
assignment1gui.c:(.text+0x1c): undefined reference to `drawPolygonLine'
assignment1gui.o: In function `on_rb_tool_line_toggled':
assignment1gui.c:(.text+0x8b): undefined reference to `drawPolygonLine'
assignment1gui.o: In function `on_rb_tool_circle_toggled':
assignment1gui.c:(.text+0xfc): undefined reference to `drawPolygonLine'
assignment1gui.o: In function `on_rb_tool_rect_toggled':
assignment1gui.c:(.text+0x16d): undefined reference to `drawPolygonLine'
assignment1gui.o: In function `on_rb_tool_edit_toggled':
assignment1gui.c:(.text+0x24a): undefined reference to `drawPolygonLine'
collect2: ld returned 1 exit status
make: *** [ass1] Error 1
的C/C++的文件我的文件夹中的main.cpp,assignment1gui.c和shadertools.c。我也有两个头文件 - assignment1gui.h和shadertools.h。正如我前面提到的,我使用assign1gui.h文件来声明新函数“drawPolygonLine();”
此外: “drawPolygonLine();”的声明现在是在“main.h”,它看起来像这样:
#ifndef MAIN_H
#define MAIN_H
extern void drawPolygonLine();
#endif /* MAIN_H */
双方的main.cpp和assignment1gui.c有“的#include‘main.h’”他们的开始。 drawPolygonLine()的定义是:
void drawPolygonLine()
{
if(option[opCount-1]==4 && drawn==false)
{
vCount++;
vertex[vCount].x=A;
vertex[vCount].y=B;
lines=lines+2;
vCount++;
vertex[vCount].x=polyX;
vertex[vCount].y=polyY;
clicks=0;
drawn=true;
}
}
函数中使用的所有变量在main.cpp中都是全局变量。
一个我如何调用drawPolygonLine()的例子;在assignment1gui.c是在这个功能:
void on_btn_color_color_set(GtkColorButton *colorbutton, gpointer user_data)
{
drawPolygonLine();
GdkColor color;
gtk_color_button_get_color(colorbutton, &color);
printf("Color set rgb=(%i,%i,%i)\n",color.red,color.green,color.blue);
}
我希望这说清楚。
你是通过cpp文件调用c函数吗?反之亦然?你得到的错误是什么? – 2012-04-13 03:46:37
你为什么说有问题?哪里有问题?是否有您收到的特定错误信息? – 2012-04-13 04:02:49
用你的代码进入文件夹,并运行'make'(只要输入一个单词,然后按回车)。它应该编译你的代码。让我们知道你之后得到了什么错误消息(并且包括任何相关的C++或C文件)。 – 2012-04-13 04:14:21