Ну, это заняло у меня достаточно много времени, но я, наконец, во всем разобрался. Это, кажется, положение земли.
- FLTK 1.3.0 совместим с файлами заголовков, но graph.cpp нуждается в небольшом изменении, чтобы все работало.
- FLTK 1.1.10 не будет корректно работать с Visual Express 2010, но будет работать с версией 2008 года.
- Файлы заголовков работают с обоими, но вам нужно внести небольшое изменение в Graph.cpp, чтобы они заработали.
После всего разочарования, которое я испытал, чтобы все это заработало, я думаю, что будет справедливо написать пошаговое руководство для людей, которые могут оказаться в подобных ситуациях. Книга предназначена для начинающих программистов, а не для людей, уже умеющих отлаживать заголовочные и cpp-файлы. Я извиняюсь за то, что решение немного длинное, но я думаю, что оно подходит только для таких людей, как я, которые, вероятно, столкнутся с этим.
Руководство по Visual Express 2008/2010
1) Построить ФЛТК. Не так просто, как кажется, но не так уж и плохо. В 2008 году используйте FLTK 1.1.0. В 2010 году используйте 1.3.0.
Для 2010 см. решение, которое я написал здесь — Microsoft 2010 visual c , установка FLTK
Для версии 2008 вместо этого запустите C:\fltk-1.1.10\vc2005\fltk.lib.vcproj.
Если в процессе сборки возникнут какие-либо ошибки, вам нужно будет выяснить, в чем проблема.
2) Настроить новый проект
- Для 2010 года просто следуйте приведенному выше руководству.
- For 2008 – basically the same idea but with a few changes
- Make sure to change all references of 1.3.0 to 1.1.10
- В разделе ввода вместо разделения файлов .lib точкой с запятой ; вместо этого используйте пробел, поэтому компоновщик > Ввод > Дополнительные зависимости будут выглядеть так: c:\fltk-1.1.10\lib\fltk.lib wsock32.lib comctl32.lib c:\fltk-1.1.10\lib\fltkjpeg. библиотека c:\fltk-1.1.10\lib\fltkiimages.lib
3) Запустите тестовую программу, чтобы убедиться, что ваш FLTK работает правильно, попробуйте -
#include <FL/Fl.h>
#include <FL/Fl_Window.h>
int main()
{
Fl_Window win(320,200);
win.show();
return Fl::run();
}
Если здесь есть какие-либо ошибки, вы не сможете продолжить.
4) Поместите файлы с его веб-сайта в нужные папки.
- For 2008 in a project named headertest -
- C:\Users\User\Documents\Visual Studio 2008\Projects\headertest\
put std_lib_facilities.h here
- C:\Users\User\Documents\Visual Studio 2008\Projects\headertest\headertest\ Поместите все остальные файлы .cpp и .h с его веб-сайта сюда, и, конечно, ваши headertest.cpp и .h (если требуется) будут создан здесь.
- Убедитесь, что вы правильно настроили проект, как описано в моем руководстве выше.
- For 2010 in a project named Fri_FLTK_Test -
- Do the same as above, but put the files in the 2010 equivalent -
C:\Users\User\Documents\Visual Studio 2008\Projects\headertest
and ..Visual Studio 2010\Projects\Fri_FLTK_Test\Fri_FLTK_Test
5) Добавьте файлы .h и .cpp в ваш активный проект.
- Просто щелкните правой кнопкой мыши проект add>Existing Items — выберите все файлы .h и .cpp в каталоге по умолчанию. Вам не нужно будет добавлять ..\std_lib_facilities.h, так как вы уже напрямую ссылаетесь на него. Не спрашивайте меня, почему, но это работает.
6) Теперь вы обнаружите, что если вы запустите проект, вы получите кучу ошибок, самые важные читает -
c:\users\user\documents\visual studio 2010\projects\fri_fltk_test\graph.cpp(237): ошибка C2084: функция 'Graph_lib::Circle::Circle(Point,int)' уже имеет тело
7) Мы можем исправить это, открыв Graph.cpp и закомментировав секцию Circle::Circle, например:
//Circle::Circle(Point p, int rr) // center and radius
//:r(rr)
//{
// add(Point(p.x-r,p.y-r)); // store top-left corner
//}
8) Сохраните изменения и снова запустите проект, вы должны убедиться, что он работает! 9) Теперь самое интересное, вставьте код из книги (или скопируйте его из – Chapter13/chapta.13.2.cpp и запустите! Должно сработать.
Миссия выполнена!
Думаю, я заслуживаю пива после этого! Мне потребовалась куча времени, чтобы во всем этом разобраться, я взглянул на Msys, g++, Netbeans и множество других вещей, связанных с IDE. Но приятно чувствовать, что это работает над моим первоначальным выбором. Я надеюсь, что это руководство поможет другим в подобных ситуациях.
Особая благодарность Skydiver с форумов Dream.In.Code за помощь в решении этой проблемы.
person
David
schedule
27.07.2012