0

我想编写和编译需要 FLTK 1.3.2 GUI 库的 C++ 代码。我想将 minGW 与 MSYS 一起使用。
我已经正确安装了 minGW 和 MSYS,并且能够使用 ./configure make 构建 FLTK。一切都到了这个地步。现在我正在测试 hello 程序,并且可以让编译器找到头文件,但它返回错误 - 我认为这是编译器找不到 FLTK 库的位置的结果。我查看了 minGW 站点,似乎让 MSYS 将编译器引导到正确位置的困难并不少见。

我已经使用 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 回答