2014-01-06 2 views
1

Моя машина в Windows 7 32-разрядная и мой компилятор для C++ - это Visual Studio 2012, поэтому я сначала загрузил FLTK (http://www.stroustrup.com/Programming/FLTK/), а затем выполнил следующие работы: хотел меня:Установка и работа с FLTK на Visual Studio 2012

I. Распакуйте загруженный файл и откройте главную папку, fltk-ll? В папке Visual C++ (например, vc2005 или vcnet) откройте файл fltk.dsw. Если у вас возникли вопросы о обновлении старых файлов проекта, выберите «Да для всех».

PS: Мой компилятор vc2012 вместо VC2005 и не было какой-либо файл с именем fltk.dsw в vc2005 или vcnet папки, поэтому я выбрал fltk.sln от vcnet и установил его. Были некоторые неудачи при установке, но они закончились, наконец!

  1. В меню «Построение» выберите «Создать решение». Это может занять несколько минут. Исходный код компилируется в библиотеки статических ссылок, так что вам не нужно перекомпилировать исходный код FLTK в любое время, когда вы создадите новый проект . Когда процесс завершится, закройте Visual Studio.

  2. Из основного каталога FLTK откройте папку lib. Скопировать (не только переместить/перетащить) все .lib-файлы, кроме README.lib (должно быть scven) в C: \ Prograrn Files \ Microsoft Visual Studio \ Vc \ lib.

  3. Вернитесь в основной каталог FLTK и скопируйте папку FL в C: \ Program Files \ Microsoft Visual Studio \ Vc \ include.

  4. Создайте новый проект в Visual Studio с одним изменением в обычном порядке: создать «проект \ Vin32» вместо «консольного приложения», когда выбирая тип проекта. Не забудьте создать «пустой проект»; в противном случае, некоторый «мастер программного обеспечения» добавит вам много материала в ваш проект, который вам вряд ли понадобится или поймет. .

  5. В Visual Studio выберите «Проект» из главного меню (сверху), а из выпадающего меню выберите «Свойства».

  6. В диалоговом окне «Свойства» в меню слева щелкните папку «Линкеровщик». Это расширяет подменю. В этом подменю нажмите «Ввод». В дополнительном поле «Зависимости» справа введите следующий текст: fltkd.lib wsock32.lib comctl32.lib fltkjpegd.lib fltkimagesd.lib [Следующий шаг может быть необходим, поскольку il теперь по умолчанию.] В Игнорировать конкретный текст библиотеки поле, введите следующий текст: libcd.lib

  7. [. Этот шаг может оказаться ненужным, поскольку/MDd теперь по умолчанию] В левом меню того же окна Свойства, член C/C++ для расширения другого подменю . Щелкните элемент подменю «Генерация кода». В правом меню измените раскрывающийся список библиотеки времени выполнения на многопоточную Debug DLL (/ MDd). Нажмите «ОК», чтобы закрыть окно «Свойства».

Я этот шаг я добавил новый элемент к этому вновь созданному проекту (я назвал этот проект testv.cpp) и вставить этот простой код для тестирования на 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(); 
} 

После запуска этот проект (нажатие F5), появилось 11 ошибок! Они в строках:

Error 1 error LNK2019: unresolved external symbol "public: static int __cdecl Fl::run(void)" ([email protected]@@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 *)" ([email protected]@[email protected]@Z) referenced in function "public: __thiscall Fl_Box::Fl_Box(int,int,int,int,char const *)" ([email protected]@[email protected]@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)" ([email protected]@[email protected]) referenced in function "public: virtual __thiscall Fl_Box::~Fl_Box(void)" ([email protected]@[email protected]) 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)" ([email protected][email protected]@[email protected]) 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)" ([email protected][email protected]@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)" ([email protected][email protected]@[email protected]) 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 *)" ([email protected]@[email protected]@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)" ([email protected]@[email protected]) 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)" ([email protected][email protected]@UAEXXZ) referenced in function _main C:\Users\CS\documents\visual studio 2012\Projects\testv\testv\testv.obj

Error 10 error LNK2019: unresolved external symbol [email protected] 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

Я думаю, что проблема связана с созданием проекта. После того, как я создал пустой проект из Win32 Project Я нажал на . Добавить новый товар и выбрал тип .cpp. Я не знаю, было это правильно или нет.

У вас есть идеи по устранению проблемы?

+0

Когда вы добавили свои библиотеки, вы ввели их в одной строке или вы щелкните эллипсис и ввести их в отдельные строки? Используйте fltkd.lib (not fltkd.1ib) и ws2_32.lib (а не ws0ck32.lib, который действительно должен был быть wsock32.lib). – cup

+0

Кроме того, когда вы построили fltk, это был MT или MD? Вы должны следовать той же модели в своем исполняемом файле. Если вам нужно использовать определенную модель компиляции, измените ваши проекты fltk на соответствие и перестройку. Это довольно утомительно, и вокруг него нет простого способа. – cup

+0

Я исправил эти ошибки ввода и снова запустил код. Единственная ошибка: Ошибка ошибка LNK1104: невозможно открыть файл 'fltkd.lib wsock32.lib comctl32.lib fltkjpegd.lib fltkimagesd.lib' \t c: \ Users \ CS \ documents \ visual studio 2012 \ Projects \ testv \ testv \ LINK – abbasi

ответ

1

Вы получаете эту ошибку, потому что вы вводите все имена библиотек в одной строке без разделителя. Он принимает весь список как одну библиотеку. Нажмите на эллипсис, затем введите имя каждой библиотеки, разделенное символом новой строки.

Вместо wsock32.lib, использование ws2_32.lib

+0

О чем вы говорите, шаг № 6? Если это так, сначала я добавил библиотеки, подобные этим fltkd.lib, wsock32.lib, comctl32.lib, fltkimagesd.lib без новых строк в () и снова запустил код, но получил эту ошибку: Ошибка LNK1104: не может открыть файл 'fltkd.lib, wsock32.lib, comctl32.lib, fltkjpegd.lib, fltkimagesd.lib'.Затем я изменил каждый из них на одну строку с разделителем (,) и запустил код. На этот раз я получил эту ошибку: Ошибка LNK1104: невозможно открыть файл «fltkd.lib». Я ценю ваши ответы. Пожалуйста, помогите мне до конца, чтобы я мог решить эту проблему. Благодарю. – abbasi

+0

HEY WOW, я сменил каждый в одной строке без разделителя, и он РАБОТАЛ. БОЛЬШОЕ БОЛЬШОЕ СПАСИБО. СПАСИБО ДРУГ. – abbasi

+0

После указанного кода я проверил это одно: #include "Simple_window.h" #include "Graph.h" INT основных() { с использованием пространства имен Graph_lib; Точка tl (100,100); Победа Simple_window (tl, 600,400, «Холст»); Полигон поли; poly.add (Точка (300 200)); poly.add (Точка (350, 100)); poly.add (Точка (400 200)); poly.set_color (Цвет: красный); win.attach (poly); win.wait_for_button();} И затем запустил код. Сначала я получил 11 ошибок: Ошибка C1083: Не могу открыть файл include: «Simple_window.h»: нет такого файла или каталога. – abbasi

0

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

Просто добавить. Чтобы разделить каждую библиотеку, поместите точку с запятой после каждого имени библиотеки (например, libraryname.lib; libraryname.lib) или просто нажмите клавишу ввода в текстовом поле, чтобы перейти к следующей строке, чтобы Visual Studio прочитала ее как следующую строку и все, что вы в него вносите, будет рассматривать его как имя библиотеки.

Пример:

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

Я учусь C++ и с использованием Microsoft Visual Studio 2015^_^