我正在使用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