FLTK-1.1.10 с Microsoft Visual C++ 2010 Express

Я пытаюсь следовать программе «Программирование — принципы и практика с использованием C», и мне это до сих пор нравится. В начале прошлой недели я столкнулся с проблемой, которая остановила дальнейший прогресс. Мне нужно установить FLTK.

После успешной сборки и запуска FLTK-1.3.0 (см. мой другой вопрос/решение) я столкнулся с проблемой, что он не работает с файлами заголовков Stroustrup. Я думаю, что это из-за того, что версии разные, но точно не знаю.

Итак, я снова пытаюсь заставить работать 1.1.

Мне не удалось собрать FLTK-1.1.10 или fltk-1.1.9 с его сайта с помощью MVC++2010.

Итак, это приводит нас к вопросам

1) Если я соберу его с помощью MinGW/Msys, сможет ли он по-прежнему запускаться из VC++? Я пытался понять MinGW/Msys до сих пор с небольшим успехом, поэтому мне еще ничего не удалось создать, поэтому я пока не могу проверить это сам.

2) Если он не будет запускать сборку MinGW, есть ли способ собрать ее с помощью VC++?

Насколько я понимаю, -Building создаст больше файлов в каталоге FLTK, что позволит мне его использовать. -MinGW использует компилятор, отличный от VC++, и они не будут хорошо работать вместе.

Я чувствую, что потратил впустую много времени на этот раздел, однако это хороший опыт обучения. Наверное, не так хорошо для моего кровяного давления.

Думаю, на данный момент моей основной альтернативой является переход на другую IDE. Затмение кажется довольно хорошим. Но мне бы очень хотелось решить эту проблему, а не уходить от VC++.

В моем предыдущем сообщении (Microsoft 2010 visual c, установка FLTK) подробно описаны ошибки, которые происходят во время компиляции, если это представляет интерес.

Я сильно гуглил эту проблему, и еще не нашел реального решения. Я надеюсь, что этот пост прояснит вопрос для меня и других будущих программистов.


person David    schedule 10.07.2012    source источник
comment
До сих пор не повезло построить что-либо. Пытаюсь понять, как использовать Cygwin, MinGW и т. д., но они не очень удобны для пользователя. Довольно неприятно создавать устаревшую версию FLTK для работы с предоставленными заголовками.   -  person David    schedule 12.07.2012
comment
Это странно. В ответ на это ниже был беглый разговор, теперь он, кажется, исчез. Если у кого-то есть решение этого, я хотел бы услышать его. Или, возможно, опубликовать рабочее решение, использующее код из книги?   -  person David    schedule 18.07.2012
comment
После абсолютно безумного количества времени, пытаясь найти решение этой проблемы, я думаю, что сдамся и перейду на другую IDE. Если у кого-то есть решение этой проблемы, буду очень рад услышать. FKTL 1.3 работает, но мне еще предстоит заставить его работать с файлами заголовков. FLTK 1.1.10 или .9 не собирается. Ну, по крайней мере, я узнал... что-то, может быть....   -  person David    schedule 18.07.2012


Ответы (2)


Ну, это заняло у меня достаточно много времени, но я, наконец, во всем разобрался. Это, кажется, положение земли.

  1. FLTK 1.3.0 совместим с файлами заголовков, но graph.cpp нуждается в небольшом изменении, чтобы все работало.
  2. FLTK 1.1.10 не будет корректно работать с Visual Express 2010, но будет работать с версией 2008 года.
  3. Файлы заголовков работают с обоими, но вам нужно внести небольшое изменение в Graph.cpp, чтобы они заработали.

После всего разочарования, которое я испытал, чтобы все это заработало, я думаю, что будет справедливо написать пошаговое руководство для людей, которые могут оказаться в подобных ситуациях. Книга предназначена для начинающих программистов, а не для людей, уже умеющих отлаживать заголовочные и cpp-файлы. Я извиняюсь за то, что решение немного длинное, но я думаю, что оно подходит только для таких людей, как я, которые, вероятно, столкнутся с этим.

Руководство по Visual Express 2008/2010

1) Построить ФЛТК. Не так просто, как кажется, но не так уж и плохо. В 2008 году используйте FLTK 1.1.0. В 2010 году используйте 1.3.0.

  1. Для 2010 см. решение, которое я написал здесь — Microsoft 2010 visual c , установка FLTK

  2. Для версии 2008 вместо этого запустите C:\fltk-1.1.10\vc2005\fltk.lib.vcproj.

    Если в процессе сборки возникнут какие-либо ошибки, вам нужно будет выяснить, в чем проблема.

2) Настроить новый проект

  1. Для 2010 года просто следуйте приведенному выше руководству.
  2. For 2008 – basically the same idea but with a few changes
    1. Make sure to change all references of 1.3.0 to 1.1.10
    2. В разделе ввода вместо разделения файлов .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) Поместите файлы с его веб-сайта в нужные папки.

  1. For 2008 in a project named headertest -
    1. C:\Users\User\Documents\Visual Studio 2008\Projects\headertest\ put std_lib_facilities.h here
    2. C:\Users\User\Documents\Visual Studio 2008\Projects\headertest\headertest\ Поместите все остальные файлы .cpp и .h с его веб-сайта сюда, и, конечно, ваши headertest.cpp и .h (если требуется) будут создан здесь.
    3. Убедитесь, что вы правильно настроили проект, как описано в моем руководстве выше.
  2. For 2010 in a project named Fri_FLTK_Test -
    1. 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 в ваш активный проект.

  1. Просто щелкните правой кнопкой мыши проект 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

Может быть, это потому, что вы используете версию Express? Я сталкивался с подобными проблемами, и мне пришлось переключиться на более старую версию Express.

Вы видели этот пост?

http://answerpot.com/showthread.php?275672-FLTK+%26+Visual+C%2B%2B+Express%3F

-Si.

person Ilios    schedule 19.07.2012
comment
Спасибо за ответ! На самом деле, я уже видел этот пост. Но было приятно посмотреть на это снова. Возможно, это связано с тем, что это экспресс, но чем больше я об этом думаю, тем больше в этом сомневаюсь. У меня FLTK 1.3 работает корректно, просто глючит, когда начинаю использовать его заголовочные файлы. - person David; 19.07.2012