Доброе утро. Работал с FLTK 1.9. Собрал следующим образом: Скомпилировал саму библиотеку, либы и хэдеры закинул в папочки студии. В настройках проекта прописал: и в Ignore: libc.lib;MSVCRT.lib Собственно все работало. Сегодня решил перейти на вторую. Скомпилировал ее и сделал все в точности так же(за исключением названий библиотек). Код (Text): comctl32.lib fltk2.lib fltk2_gl.lib fltk2_images.lib fltk2_jpeg.lib fltk2_png.lib fltk2_glut.lib fltk2_z.lib MSVCRTd.lib ws2_32.lib Но нивкакую не хочет линковаться, выдает: Код (Text): 1>------ Build started: Project: fltk, Configuration: Release Win32 ------ 1>LIBCMT.lib(crt0dat.obj) : error LNK2005: __initterm_e already defined in MSVCRTd.lib(MSVCR100D.dll) 1>LIBCMT.lib(crt0dat.obj) : error LNK2005: _exit already defined in MSVCRTd.lib(MSVCR100D.dll) 1>LIBCMT.lib(crt0dat.obj) : error LNK2005: __exit already defined in MSVCRTd.lib(MSVCR100D.dll) 1>LIBCMT.lib(crt0dat.obj) : error LNK2005: __cexit already defined in MSVCRTd.lib(MSVCR100D.dll) 1>LIBCMT.lib(crt0dat.obj) : error LNK2005: __amsg_exit already defined in MSVCRTd.lib(MSVCR100D.dll) 1>LIBCMT.lib(hooks.obj) : error LNK2005: "void __cdecl terminate(void)" (?terminate@@YAXXZ) already defined in MSVCRTd.lib(MSVCR100D.dll) 1>LIBCMT.lib(invarg.obj) : error LNK2005: __invoke_watson already defined in MSVCRTd.lib(MSVCR100D.dll) 1>LIBCMT.lib(crt0init.obj) : error LNK2005: ___xi_a already defined in MSVCRTd.lib(cinitexe.obj) 1>LIBCMT.lib(crt0init.obj) : error LNK2005: ___xi_z already defined in MSVCRTd.lib(cinitexe.obj) 1>LIBCMT.lib(crt0init.obj) : error LNK2005: ___xc_a already defined in MSVCRTd.lib(cinitexe.obj) 1>LIBCMT.lib(crt0init.obj) : error LNK2005: ___xc_z already defined in MSVCRTd.lib(cinitexe.obj) 1>LIBCMT.lib(winxfltr.obj) : error LNK2005: __XcptFilter already defined in MSVCRTd.lib(MSVCR100D.dll) 1>LIBCMT.lib(mlock.obj) : error LNK2005: __unlock already defined in MSVCRTd.lib(MSVCR100D.dll) 1>LIBCMT.lib(mlock.obj) : error LNK2005: __lock already defined in MSVCRTd.lib(MSVCR100D.dll) 1>LIBCMT.lib(errmode.obj) : error LNK2005: ___set_app_type already defined in MSVCRTd.lib(MSVCR100D.dll) 1>LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library 1>C:\Users\bug1z\documents\visual studio 2010\Projects\fltk\Release\fltk.exe : fatal error LNK1169: one or more multiply defined symbols found Как быть? Может у кого получится подружить с ней 10ю студит. Вот сама библиотека: http://www.fltk.org/software.php?VERSION=1.3.0&FILE=fltk/snapshots/fltk-2.0.x-alpha-r8800.tar.bz2 и код для теста: Код (Text): #include <fltk/Window.h> #include <fltk/Widget.h> #include <fltk/run.h> using namespace fltk; int main(int argc, char **argv) { Window *window = new Window(300, 180); window->begin(); Widget *box = new Widget(20, 40, 260, 100, "Hello, World!"); box->box(UP_BOX); box->labelfont(HELVETICA_BOLD_ITALIC); box->labelsize(36); box->labeltype(SHADOW_LABEL); window->end(); window->show(argc, argv); return run(); } Спасибо.
А можно увидеть ход действий? А то заметил, что сама FLTK скомпилилась с эррорами, хотя библиотеки появились в папке. Пробовал уже и 8й студией собрать его и интеловским компилятором - все равно ругается. может из за этого либа вышла не работающей? Вроде все по инструкции делал: подгрузил проект в студию(из папки vcnet) - она попросила что то переконвертировать. Дал добро. Затем выбрал Relase. Если брать из папки visualc - то еще что то говорит о контроле версий.
Собрал с опцией /MT - помогло. Хотя Страуструп в книге писал, что нужно /MDd А с самим солюшином флтк проблема была весьма странная. Студия создавала в папке релиз файлы с расширением tlog. И в ошибке говорилось, что студия не может получить доступ к этому файлу, так как он используется другим проектом. Пришлось компилировать по 1 проекту и чистить эти файлы вручную. Хотя demo так и не скомпилировался. Большое спасибо за помощь!
Хотя нет. проблема решилась только частично. Работает только в Debug Теперь говорит вот что: Код (Text): 1>fd.obj : error LNK2001: unresolved external symbol "int __cdecl fltk::run(void)" (?run@fltk@@YAHXZ) 1>fd.obj : error LNK2001: unresolved external symbol "class fltk::Symbol * fltk::UP_BOX" (?UP_BOX@fltk@@3QAVSymbol@1@A) 1>fd.obj : error LNK2001: unresolved external symbol "struct fltk::Font * fltk::HELVETICA_BOLD_ITALIC" (?HELVETICA_BOLD_ITALIC@fltk@@3QAUFont@1@A) 1>fd.obj : error LNK2001: unresolved external symbol "public: void __thiscall fltk::Window::show(int,char * *)" (?show@Window@fltk@@QAEXHPAPAD@Z) 1>fd.obj : error LNK2001: unresolved external symbol "public: __thiscall fltk::Window::Window(int,int,char const *)" (??0Window@fltk@@QAE@HHPBD@Z) 1>fd.obj : error LNK2001: unresolved external symbol "class fltk::LabelType * fltk::SHADOW_LABEL" (?SHADOW_LABEL@fltk@@3QAVLabelType@1@A) 1>fd.obj : error LNK2001: unresolved external symbol "public: void __thiscall fltk::Widget::labelsize(float)" (?labelsize@Widget@fltk@@QAEXM@Z) 1>fd.obj : error LNK2001: unresolved external symbol "public: void __thiscall fltk::Widget::labeltype(class fltk::LabelType *)" (?labeltype@Widget@fltk@@QAEXPAVLabelType@2@@Z) 1>fd.obj : error LNK2001: unresolved external symbol "public: void __thiscall fltk::Widget::labelfont(struct fltk::Font *)" (?labelfont@Widget@fltk@@QAEXPAUFont@2@@Z) 1>fd.obj : error LNK2001: unresolved external symbol "public: void __thiscall fltk::Widget::box(class fltk::Symbol *)" (?box@Widget@fltk@@QAEXPAVSymbol@2@@Z) 1>fd.obj : error LNK2001: unresolved external symbol "public: __thiscall fltk::Widget::Widget(int,int,int,int,char const *)" (??0Widget@fltk@@QAE@HHHHPBD@Z) 1>fd.obj : error LNK2001: unresolved external symbol "private: static class fltk::Group * fltk::Group::current_" (?current_@Group@fltk@@0PAV12@A) 1>LIBCMT.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
Страуструп писал? Поставьте MT и в Release. Вообще какой тип рантайма используется в программе, такой же должен быть и у статической библиотеки. При использовании динамической библиотеки это не важно.
Да, в своей новой книге Принципы и практика использования С++. Но он, видимо, подразумевал, что библиотека тоже будет собрана как /MDd В релизе выставлено тоже /MT Может опять налажал где то при компиляции библиотеки.. Сей час перекрмпилирую - отпишу.
Скорее всего не указана fltk2.lib в настройках линковки для релиза. З.Ы. У меня всё гуд и в дебаге и в релизе.
Да, Вы правы. В релизе не были указаны библиотеки. Спасибо огромное! И если можно, последний вопрос? В версии 1.9 аналогичный представленному в первом посте код выдавал окошко с приветствием, но сей час помимо этого окошка еще и консольное есть. Можно ли от него как то избавиться?
И в релизе и в дебаге. Вкладка "Компоновщик" пункт "Система". Там в колонке Подсистема написано Windows(/SUBSUSTEM:WINDOWS) Я создавал Win32 приложение, а не консольное.
Тогда не знаю, этого не должно быть. По крайней мере у меня опять же никакого консольного окна не появляется. Дополнительно ничего не крутили в проектах? Можно посмотреть SUBSUSTEM непосредственно в PE заголовке файла.
Посмотрел в PEIDe - сабсистем Win32 GUI. А проявилось это весьма странно. После действий описанных в посте #5 все заработало и накаких консольных окон не было. Я скопировал все либ файлы и перенес с ПК на ноут(тоже 10я студия). Все настроил и там появилось это консольное окошко. Затем перекомпилировал библиотеку с ключом /MDd и это окно появилось и на ПК.