Microsoft 2010 visual c , installing FLTK

2019-02-20 01:14发布

问题:

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.

回答1:

FLTK 1.3.0

Ok, I've finally gotten a solution to this (after about 12 hours) -

Part 1 - Building FLTK

  1. Download fltk-1.3.0 and extract it.
  2. 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).
  3. Go into C:\fltk-1.3.0\ide\VisualC2010 and run fltk.sln
  4. Right click it and click build
  5. It should complete with no errors. If there are errors, I very much doubt this guide will help you.
  6. 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:

  1. Launch MSVC++2010
  2. File>New>Project - Select Win32 Project and name

       FLTK-Test3
    
  3. Click next on the wizard then Application type: Keep as Windows application Additional Options: Empty project Click finish

  4. Right click source files on the solution explorer, add

       FLTK-Test3.cpp
    
  5. 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
  1. 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.



回答2:

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...



回答3:

The error message that you are getting suggests that probably you have created the project with a setting other than the one is required (Win32 console application) to run FLTK.

The following link should help.

http://social.msdn.microsoft.com/Forums/en-US/Vsexpressvc/thread/b83e4884-9dec-4d67-ab92-90d5b6c8c51c/