2
votes

My machine in Windows 7 32-bit and my compiler for C++ is Visual Studio 2012 so first I downloaded FLTK from here (http://www.stroustrup.com/Programming/FLTK/) and then I did the works as follows has wanted me:

I. Unzip the downloaded file and open the main folder, fltk-l.l.? In a Visual C++ folder (e.g., vc2005 or vcnet), open fltk.dsw. If asked about updating old project files, choose Yes to All.

PS: My compiler is vc2012 instead of vc2005 and there wasn't any file named fltk.dsw in vc2005 or vcnet folders, so I chose the fltk.sln from vcnet and installed it. There were some failing when installing but it finished finally!

  1. From the Build menu, choose Build Solution. This may take a few minutes. The source code is being compiled into static link libraries so that you do not have to recompile the FLTK source code any time you make a new project. When the process has finished , close Visual Studio.

  2. From the main FLTK directory open the lib folder. Copy (not just move/drag) all the .lib files except README.lib (there should be scven) into C:\Prograrn Files\Microsoft Visual Studio\Vc\lib.

  3. Go back to the FLTK main directory and copy the FL folder into C:\Program Files\Microsoft Visual Studio\Vc\include.

  4. Create a new project in Visual Studio with one change to the usual procedure: create a "\Vin32 project" instead of a "console application" when choosing your project type. Be sure to create an "empty project"; otherwise, some "software wizard" will add a lot of stuff to your project that you are unlikely to need or understand.

  5. In Visual Studio, choose Project from the main (top) menu, and from the drop-down menu choose Properties.

  6. In the Properties dialog box, in the left menu, click the Linker folder. This expands a sub-menu. In this sub-menu, click Input. In the Additional Dependencies text field on the right, enter the following text: fltkd.lib wsock32.lib comctl32.lib fltkjpegd.lib fltkimagesd.lib [The following step may be lIImecessary because il is now the default.] In the Ignore Specific Library text field, enter the following text: libcd.lib

  7. [This step may be unnecessary because /MDd is now the default.] In the left menu of the same Properties window, dick C/C++ to expand a different sub-menu. Click the Code Generation sub-menu item. In the right menu, change the Runtime Library drop-down to Multi-threaded Debug DLL (/MDd). Click OK to close the Properties window.

I this step I added a new item to that newly created project (I named that project testv.cpp) and pasted this simple code for testing the FLTK:

#include <FL/Fl.h>
#include <FL/Fl_box.h>
#include <FL/Fl_Window.h>

//***************************

int main() 
{
  FI_Window window(200, 200, "Window title");
  FL_Box box(O,O,200,200, "Hey, I mean, He llo, World! ");
  window.show();
  return Fl::run();
}

After running this project (pressing F5), 11 errors appeared! They are in bellow:

Error 1 error LNK2019: unresolved external symbol "public: static int __cdecl Fl::run(void)" (?run@Fl@@SAHXZ) referenced in function _main C:\Users\CS\documents\visual studio 2012\Projects\testv\testv\testv.obj

Error 2 error LNK2019: unresolved external symbol "protected: __thiscall Fl_Widget::Fl_Widget(int,int,int,int,char const *)" (??0Fl_Widget@@IAE@HHHHPBD@Z) referenced in function "public: __thiscall Fl_Box::Fl_Box(int,int,int,int,char const *)" (??0Fl_Box@@QAE@HHHHPBD@Z) C:\Users\CS\documents\visual studio 2012\Projects\testv\testv\testv.obj

Error 3 error LNK2019: unresolved external symbol "public: virtual __thiscall Fl_Widget::~Fl_Widget(void)" (??1Fl_Widget@@UAE@XZ) referenced in function "public: virtual __thiscall Fl_Box::~Fl_Box(void)" (??1Fl_Box@@UAE@XZ) C:\Users\CS\documents\visual studio 2012\Projects\testv\testv\testv.obj

Error 4 error LNK2001: unresolved external symbol "public: virtual void __thiscall Fl_Widget::resize(int,int,int,int)" (?resize@Fl_Widget@@UAEXHHHH@Z) C:\Users\CS\documents\visual studio 2012\Projects\testv\testv\testv.obj

Error 5 error LNK2001: unresolved external symbol "protected: virtual void __thiscall Fl_Box::draw(void)" (?draw@Fl_Box@@MAEXXZ) C:\Users\CS\documents\visual studio 2012\Projects\testv\testv\testv.obj

Error 6 error LNK2001: unresolved external symbol "public: virtual int __thiscall Fl_Box::handle(int)" (?handle@Fl_Box@@UAEHH@Z) C:\Users\CS\documents\visual studio 2012\Projects\testv\testv\testv.obj

Error 7 error LNK2019: unresolved external symbol "public: __thiscall Fl_Window::Fl_Window(int,int,char const *)" (??0Fl_Window@@QAE@HHPBD@Z) referenced in function _main C:\Users\CS\documents\visual studio 2012\Projects\testv\testv\testv.obj

Error 8 error LNK2019: unresolved external symbol "public: virtual __thiscall Fl_Window::~Fl_Window(void)" (??1Fl_Window@@UAE@XZ) referenced in function _main C:\Users\CS\documents\visual studio 2012\Projects\testv\testv\testv.obj

Error 9 error LNK2019: unresolved external symbol "public: virtual void __thiscall Fl_Window::show(void)" (?show@Fl_Window@@UAEXXZ) referenced in function _main C:\Users\CS\documents\visual studio 2012\Projects\testv\testv\testv.obj

Error 10 error LNK2019: unresolved external symbol WinMain@16 referenced in function __tmainCRTStartup C:\Users\CS\documents\visual studio 2012\Projects\testv\testv\MSVCRTD.lib(crtexew.obj)

Error 11 error LNK1120: 10 unresolved externals C:\Users\CS\documents\visual studio 2012\Projects\testv\Debug\testv.exe

I think the problem is to do with the creating the project. After I created an empty project from Win32 Project I clicked on Add new item and chose the .cpp type. I don't know was it correct or not.

Any idea for fixing the problem?

2
When you added your libraries, did you type them in on one line or did you click on the ellipsis and type them in on separate lines? Use fltkd.lib (not fltkd.1ib) and ws2_32.lib (not ws0ck32.lib, which really should have been wsock32.lib).cup
Also, when you built fltk, was it MT or MD? You need to follow the same model in your executable. If you have to use a particular compilation model, then change your fltk projects to match and rebuild. It is quite tedious and there is no simple way around it.cup
I corrected those typing errors and ran the code again. The only error was this: Error 1 error LNK1104: cannot open file 'fltkd.lib wsock32.lib comctl32.lib fltkjpegd.lib fltkimagesd.lib' c:\Users\CS\documents\visual studio 2012\Projects\testv\testv\LINKabbasi
I don't what do you mean by " when you built fltk, was it MT or MD?", sorry. I didn't build the fltk, I downloaded it from mentioned site.abbasi
So what did you do after changing fltk.dsw to fltk.sln? Did you build it or just convert it without building. Anyway check the fltk project whether it was built as MT or MD.cup

2 Answers

1
votes

You are getting that error because you are entering all the library names on one line without a separator. It is taking the whole list as one library. Click on the ellipsis then enter each library name separated by a newline.

Instead of wsock32.lib, use ws2_32.lib

0
votes

You are getting that error because you are entering all the library names on one line without a separator. It is taking the whole list as one library. Click on the ellipsis then enter each library name separated by a newline.

Instead of wsock32.lib, use ws2_32.lib

Just to add. To Separate each library, put a semicolon after each library name (ex. libraryname.lib; libraryname.lib) or just press enter on the text box to go to the next line so Visual Studio will read it as next line and anything you enter to it will consider it as a library name.

Example:

libraryname.lib - Now, press enter so it will go to the next line, VS will recognize at a library name. libraryname.lib - This is the next line and your new library

I am studying C++ and using Microsoft Visual Studio 2015 ^_^