FLTK problems with MSV2010C++
I'm following "Programming - Principles and Practice Using C++".
Having a bad time trying to get FLTK running correctly. I worked for me, once, then never again. I have detailed the steps taken below, and would really appreciate it if anyone can notice anything strange.
My main concerns are the following: 1) The steps in the Linker > Input > Additional dependencies are a little confusing 2) I have built both solutions for 1.1.9 and 1.3.0. Could these conflict? 3) My understanding of the process is basic to say the least.
What does building actually achieve? What objects will it create? How can I check these have been made correctly?
System Windows 7(64 bit) (Microsoft 2010 Visual C++)
Steps tried for fltt 1.1.9
1 Download fltk-1.1.9-source
2 The vlC2005 solution gives me the following results:
========== Build: 66 succeeded, 3 failed, 0 up-to-date, 1 skipped ==========
3 Copied the lib files from the source to x:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib
4 Copied the FL FOLDER into (so the folder is added / replaced) x:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\
5 If I try to run the solution, it fails -
========== Build: 6 succeeded, 3 failed, 0 up-to-date, 0 skipped ==========
6 Create a new project named graphics6, as a win32 project
7 Application settings - Windows application & empty project
8 In the source files, created graphics6.cpp, added the following code
#include <FL/Fl.h> #include <FL/Fl_Box.h> #include <FL/Fl_Window.h> int main() { Fl_Window window(200,200,"Window Title"); Fl_Box box(0,0,200,200,"Hey"); window.show(); return Fl::run(); }
9 When I run it, I get the following
1>MSVCRTD.lib(crtexew.obj) : error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup
10 Alter the project settings - Linker > Input > Additional dependencies:
"kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib; shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(fltkd.lib wsock32.lib comctl32.lib fltkjpegd.lib fltkimagesd.lib)"
11 When I run, I get this -
1>MSVCRTD.lib(crtexew.obj) : error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup
Conclusion 1.1.9 cannot be built under MS2010VC++
Let's try 1.3 instead -------
1 Download 1.3 and run the solution \fltk-1.3.0-source\fltk-1.3.0\ide\VisualC2010\fltk.sln
2 Built it (I've done this a few times, so it gives the following result :
========== Build: 0 succeeded, 0 failed, 79 up-to-date, 0 skipped ==========
3 If I run it, I get the graphics on the screen. So far so good!
4 Copied the lib files from the source to x:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib
5 Copied the FL FOLDER into (so the folder is added / replaced) x:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\
6 Steps 6 - 8 are the same as above, so just loaded the previous project.
7 When I run
1>MSVCRTD.lib(crtexew.obj) : error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup 1>C:my information \visual studio 2010\Projects\graphics6\Debug\graphics6.exe : fatal error LNK1120: 1 unresolved externals ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
8 added Ignore Default Libraries> libcd.lib
9 Ran it again with the same results
Sorry about the length of this, but I feel the only way to clarify the problem is to include all the details.
As far as I can see, I'm following the instructions as closely as I can. The major problem being that I cant run 1.1.9.
I've searched for solutions to this problem on a number of sites, but have yet to find a detailed step by step write up of the process.
FLTK 1.3.0
Ok, I've finally gotten a solution to this (after about 12 hours) -
Part 1 - Building FLTK
- Download fltk-1.3.0 and extract it.
- Copy the contained fltk-1.3.0 folder to C:\ (you can use another location, but you'll have to change some of the commands).
- Go into C:\fltk-1.3.0\ide\VisualC2010 and run fltk.sln
- Right click it and click build
- It should complete with no errors. If there are errors, I very much doubt this guide will help you.
- Once it's finished, you should be able to run it (will open windows).
Part 2 - Running your own project Assuming the build went correctly, you can now follow these steps:
- Launch MSVC++2010
File>New>Project - Select Win32 Project and name
FLTK-Test3
Click next on the wizard then Application type: Keep as Windows application Additional Options: Empty project Click finish
Right click source files on the solution explorer, add
FLTK-Test3.cpp
Right click FLTK-Test3 and go into properties
a) Configuration Properties>C/C++>Command Line>Additional Options - add
/Ic:\fltk-1.3.0
b) Configuration Properties>Linker>Input>Additional Dependencies> This is the hardest part, you need to add
c:\fltk-1.3.0\lib\fltkd.lib;wsock32.lib;comctl32.lib;c:\fltk-1.3.0\lib\fltkjpegd.lib;c:\fltk-1.3.0\lib\fltkimagesd.lib;
to the end of the line (replacing the #() information. My change resulted in this, yours might be different -
kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;c:\fltk-1.3.0\lib\fltkd.lib;wsock32.lib;comctl32.lib;c:\fltk-1.3.0\lib\fltkjpegd.lib;c:\fltk-1.3.0\lib\fltkimagesd.lib;
the 'd' at the end of the .lib file indicates debug, so for final build I think you are supposed to include the ones without the 'd'. So ..fltkjpeg.lib not ..jpegd.lib.
If this section works properly, when you add the first #include line of the code, it shouldn't be underlined. If it is, theres a problem.
c) You may also have to do this (if it doesnt run)
Configuration Properties>Linker>Input>Ignore Specific Default Libraries>
libcd.lib
Once all this has been completed, you should be able to add the full code below -
#include <FL/Fl.h> #include <FL/Fl_Window.h> int main() { Fl_Window win(320,200); win.show(); return Fl::run(); }
Enter the code above, and run.
I still got a ton of errrors, -
'FLTK-Test3.exe': Loaded 'C:\Users\USER\Documents\Visual Studio 2010\Projects\FLTK-Test3\Debug\FLTK-Test3.exe', Symbols loaded. 'FLTK-Test3.exe': Loaded 'C:\Windows\SysWOW64\ntdll.dll', Cannot find or open the PDB file 'FLTK-Test3.exe': Loaded 'C:\Windows\SysWOW64\kernel32.dll', Cannot find or open the PDB file 'FLTK-Test3.exe': Loaded 'C:\Windows\SysWOW64\KernelBase.dll', Cannot find or open the PDB file 'FLTK-Test3.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.windows.common- controls_6595b64144ccf1df_5.82.7601.17514_none_ec83dffa859149af\comctl32.dll', Cannot find or open the PDB file 'FLTK-Test3.exe': Loaded 'C:\Windows\SysWOW64\advapi32.dll', Cannot find or open the PDB file 'FLTK-Test3.exe': Loaded 'C:\Windows\SysWOW64\msvcrt.dll', Cannot find or open the PDB file 'FLTK-Test3.exe': Loaded 'C:\Windows\SysWOW64\sechost.dll', Cannot find or open the PDB file 'FLTK-Test3.exe': Loaded 'C:\Windows\SysWOW64\rpcrt4.dll', Cannot find or open the PDB file 'FLTK-Test3.exe': Loaded 'C:\Windows\SysWOW64\sspicli.dll', Cannot find or open the PDB file 'FLTK-Test3.exe': Loaded 'C:\Windows\SysWOW64\cryptbase.dll', Cannot find or open the PDB file 'FLTK-Test3.exe': Loaded 'C:\Windows\SysWOW64\gdi32.dll', Cannot find or open the PDB file 'FLTK-Test3.exe': Loaded 'C:\Windows\SysWOW64\user32.dll', Cannot find or open the PDB file 'FLTK-Test3.exe': Loaded 'C:\Windows\SysWOW64\lpk.dll', Cannot find or open the PDB file 'FLTK-Test3.exe': Loaded 'C:\Windows\SysWOW64\usp10.dll', Cannot find or open the PDB file 'FLTK-Test3.exe': Loaded 'C:\Windows\SysWOW64\msvcr100d.dll', Symbols loaded. 'FLTK-Test3.exe': Loaded 'C:\Windows\SysWOW64\comdlg32.dll', Cannot find or open the PDB file 'FLTK-Test3.exe': Loaded 'C:\Windows\SysWOW64\shlwapi.dll', Cannot find or open the PDB file 'FLTK-Test3.exe': Loaded 'C:\Windows\SysWOW64\shell32.dll', Cannot find or open the PDB file 'FLTK-Test3.exe': Loaded 'C:\Windows\SysWOW64\ole32.dll', Cannot find or open the PDB file 'FLTK-Test3.exe': Loaded 'C:\Windows\SysWOW64\imm32.dll', Cannot find or open the PDB file 'FLTK-Test3.exe': Loaded 'C:\Windows\SysWOW64\msctf.dll', Cannot find or open the PDB file 'FLTK-Test3.exe': Loaded 'C:\Windows\SysWOW64\uxtheme.dll', Cannot find or open the PDB file 'FLTK-Test3.exe': Loaded 'C:\Windows\SysWOW64\dwmapi.dll', Cannot find or open the PDB file 'FLTK-Test3.exe': Loaded 'C:\Windows\SysWOW64\clbcatq.dll', Cannot find or open the PDB file 'FLTK-Test3.exe': Loaded 'C:\Windows\SysWOW64\oleaut32.dll', Cannot find or open the PDB file 'FLTK-Test3.exe': Loaded 'C:\Windows\SysWOW64\msimtf.dll', Cannot find or open the PDB file 'FLTK-Test3.exe': Loaded 'C:\Windows\SysWOW64\version.dll', Cannot find or open the PDB file 'FLTK-Test3.exe': Unloaded 'C:\Windows\SysWOW64\msimtf.dll' 'FLTK-Test3.exe': Unloaded 'C:\Windows\SysWOW64\version.dll'
.. but it ran!
Hope that helps.
David, I suggest you watch this excellent (after so many years it still rocks) video tutorial made by Greg Ercolano: http://seriss.com/people/erco/fltk-videos/fltk-ms-vs-build.html . The video is titled "How To Get Started Building FLTK With Visual Studio 7.0" but I believe it is applicable to VC 2010 as well.
About your problem - I think it is simply the type of the project that is perhaps causing the problem... Configure your project to be a Win32 project. Although, FLTK app should work as console app as well...