Compilation 与msys-minGW一起使用外部库 我想编写和编译需要FLTK 1.3.2 GUI库的C++代码。 我想与MSYS一起使用minGW。 我已经正确安装了minGW和MSYS,并且能够使用./configure构建FLTK 制作到目前为止,一切都很顺利。 现在我正在测试hello程序,可以让编译器定位头文件,但它返回错误——我认为这是编译器没有找到FLTK库位置的结果。我查看了minGW站点,似乎让MSYS将编译器指向正确位置的困难并不少见 我已经用C++做了一年的工作,但对Mys.

Compilation 与msys-minGW一起使用外部库 我想编写和编译需要FLTK 1.3.2 GUI库的C++代码。 我想与MSYS一起使用minGW。 我已经正确安装了minGW和MSYS,并且能够使用./configure构建FLTK 制作到目前为止,一切都很顺利。 现在我正在测试hello程序,可以让编译器定位头文件,但它返回错误——我认为这是编译器没有找到FLTK库位置的结果。我查看了minGW站点,似乎让MSYS将编译器指向正确位置的困难并不少见 我已经用C++做了一年的工作,但对Mys.,compilation,mingw,msys,fltk,Compilation,Mingw,Msys,Fltk,这是我的命令: 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

这是我的命令:

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中的函数定义。

再说一次,我是个新手,所以非常感谢您的帮助。
谢谢。

您的编译命令不好。。。您只通知LD在何处使用-L参数搜索其他库,但不指定实际要使用的任何库。为此,您使用-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配置脚本获取标志

这是我从这里“偷”来的一个MinGW生成文件:


谢谢你的回复!我要试试这个。
# 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.