0

FLTK 1.3.2 GUI ライブラリを必要とする C++ コードを作成してコンパイルしたいと考えています。MSYSでminGWを使いたいです。
minGW と MSYS を適切にインストールし、./configure make で FLTK をビルドできました。ここまではすべてうまくいきました。現在、hello プログラムをテストしており、コンパイラーにヘッダー ファイルの場所を特定させることができますが、エラーが返されます。これは、コンパイラーが FLTK ライブラリーの場所を見つけられなかった結果であると考えられます。私は minGW サイトを調べましたが、MSYS がコンパイラを正しい場所に誘導するのが難しいことは珍しいことではないようです。

私は約 1 年間 C++ minGW を使用してきましたが、MSYS はまったく初めてです。

これが私のコマンドです:

c++ Hello.cxx -Lc:/fltk-1.3.2/test -Ic:/fltk-1.3.2 -o Hello.exe

(構文が正しいかどうかわからないので、コメントをいただければ幸いです)

コンパイラから得られるものは次のとおりです。

C:\Users\CROCKE~1\AppData\Local\Temp\ccbpaWGj.o:hello.cxx(.text+0x3c): undefined reference to 'Fl_Window::Fl_Window(int, int, char const*)'

... さらに似たようなコメント...

collect2: ld returned exit status

コンパイラは、私が信じている関数定義を見つけることができないようですc:/fltk-1.3.2/test.

繰り返しますが、私は初心者なので、どんな助けも大歓迎です。ありがとう。

4

1 に答える 1

0

コンパイル コマンドが適切ではありません... -L パラメータを使用して、追加のライブラリを検索する場所を LD に通知するだけで、実際に使用するライブラリを指定していません。そのために -l フラグを使用します。したがって、コマンドは次のようになります。g++ Hello.cxx -Lc:/fltk-1.3.2/test -Ic:/fltk-1.3.2 -o Hello.exe -llibfltk_images -llibfltk -llibwsock32 -llibgdi32 -llibuuid -llibole32 私の推奨事項 - 提供された fltk-config スクリプトを使用してフラグを取得します。

これは、私がここから「盗んだ」MinGW makefile です: http://www.fltk.org/articles.php?L1286

# Makefile for building simple FLTK programs
# using MinGW on the windows platform.

# I recommend setting C:\MinGW\bin AND C:\MinGW\msys\1.0\bin 
# in the environment %PATH% variable on the development machine.

MINGW=C:/MinGW
MSYS=${MINGW}/msys/1.0
FLTK_CONFIG=${MSYS}/local/bin/fltk-config
INCLUDE=-I${MSYS}/local/include
LIBS=-L${MSYS}/local/lib 
CC=${MINGW}/bin/g++.exe
RM=${MSYS}/bin/rm
LS=${MSYS}/bin/ls
EXE=dynamic_buttons_scroll.exe

SRC=$(shell ${LS} *.cxx)
OBJS=$(SRC:.cxx=.o)
CFLAGS=${INCLUDE} `${FLTK_CONFIG} --cxxflags`
LINK=${LIBS} `${FLTK_CONFIG} --ldflags`

all:${OBJS}
        ${CC} ${OBJS} ${LINK} -o ${EXE}

%.o: %.cxx
        ${CC} ${INCLUDE} ${CFLAGS} -c $*.cxx -o $*.o

clean:
        - ${RM} ${EXE}
        - ${RM} ${OBJS}

tidy: all
        - ${RM} ${OBJS}

rebuild: clean all

# Remember, all indentations must be tabs... not spaces.
于 2013-01-31T10:04:57.060 に答える