OpenGLを使用してC/C++でグラフィックスプログラムを作成しています。私はたくさんの.cファイルを持っていますが、私はassign1gui.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です。私はまた、2つのヘッダーファイル - assignment1gui.hとshadertools.hを持っています。前述のように、私はassignment1gui.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()を呼び出す方法の例。代入1gui.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関数を呼び出していますか、その逆ですか?あなたが得たエラーは何ですか? –
なぜ問題があるとお考えですか?問題はどこだ?取得している特定のエラーメッセージはありますか? –
あなたのコードでフォルダに移動し、 'make'を実行してください(ちょうどその単語を1つ入力してからEnterを押します)。コードをコンパイルする必要があります。その後、どのようなエラーメッセージが表示されるかをお知らせください(関連するC++またはCファイルが含まれています)。 –