我在使用FLTK的测试项目时遇到了一些麻烦,我在Code :: Blocks,Windows 7上做了很多。
花了很多时间了解如何以正确的顺序放置库,我设法让项目接近完成。然而,仍存在链接问题:
mingw32-g++.exe -Wall -fexceptions -IC:\Users\Svalorzen\Documents\Projects\fltk-1.3.0 -mwindows -DWIN32 -DUSE_OPENGL32 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -c C:\Users\Svalorzen\Documents\Projects\test\main.cpp -o obj\Debug\main.o
mingw32-g++.exe -o bin\Debug\test.exe obj\Debug\main.o -LC:\Users\Svalorzen\Documents\Projects\fltk-1.3.0\lib -mwindows -lfltk -lole32 -luuid -lcomctl32
C:\Users\Svalorzen\Documents\Projects\fltk-1.3.0\lib/libfltk.a(Fl_Native_File_Chooser.o):Fl_Native_File_Chooser.cxx:(.text+0x1556): undefined reference to `__chkstk_ms'
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 1 seconds)
1 errors, 0 warnings
但是,使用与Code :: Blocks显示的完全相同的脚本,在命令提示符下执行(或者甚至是重要的msys),正确编译并链接所有内容。结果exe也有效。
C:\Users\Svalorzen\Documents\Projects\test>mingw32-g++ -Wall -fexceptions -IC:\Users\Svalorzen\Documents\Projects\fltk-1.3.0 -mwindows -DWIN32 -DUSE_OPENGL32 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -c C:\Users\Svalorzen\Documents\Projects\test\main.cpp -o obj\Debug\main.o
C:\Users\Svalorzen\Documents\Projects\test>mingw32-g++ -o bin\Debug\test.exe obj\Debug\main.o -LC:\Users\Svalorzen\Documents\Projects\fltk-1.3.0\lib -mwindows -lfltk -lole32 -luuid -lcomctl32
C:\Users\Svalorzen\Documents\Projects\test>dir bin\Debug\test.exe
Volume in drive C has no label.
Volume Serial Number is 00E8-6659
Directory of C:\Users\Svalorzen\Documents\Projects\test\bin\Debug
10/05/2012 19:01 661.087 test.exe
1 File(s) 661.087 bytes
0 Dir(s) 66.016.849.920 bytes free
指令中的路径都是绝对的,所以我真的不明白为什么会这样。
我做错了什么?我应该检查什么?
编辑:事实证明我有一个MinGW安装,我没有记住,Code :: Blocks正在使用那个。我改变了它,现在一切都修好了。答案 0 :(得分:0)
如果您的MinGW是最新的,请尝试添加-no-vcproj
和-no-dsp
,然后运行mingw32-make confclean
。
答案 1 :(得分:0)
事实证明我有一个我不记得的MinGW安装,Code :: Blocks正在使用那个。
我使用创建库的相同编译器设置Code :: Blocks,现在一切都很好。