![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Stajor |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 11.7.2005 Репутация: нет Всего: нет |
Написал "Hello Word", используя библиотеку FLTK в MS VC 6.0, как написано в мануале (передрал все под чистую), но при компиляции вылетают ошибки:
Compiling... hello.cxx c:\fltk\fltk duble\fltk-1.1.6\fl\fl_window.h(91) : warning C4244: '=' : conversion from 'short' to 'unsigned char', possible loss of data c:\fltk\fltk duble\fltk-1.1.6\fl\fl_window.h(91) : warning C4244: '=' : conversion from 'short' to 'unsigned char', possible loss of data c:\fltk\fltk duble\fltk-1.1.6\fl\fl_window.h(91) : warning C4244: '=' : conversion from 'short' to 'unsigned char', possible loss of data Linking... MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _toupper already defined in LIBCD.lib(toupper.obj) MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _tolower already defined in LIBCD.lib(tolower.obj) MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _free already defined in LIBCD.lib(dbgheap.obj) MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _realloc already defined in LIBCD.lib(dbgheap.obj) MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _malloc already defined in LIBCD.lib(dbgheap.obj) MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _sprintf already defined in LIBCD.lib(sprintf.obj) MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _exit already defined in LIBCD.lib(crt0dat.obj) MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _memmove already defined in LIBCD.lib(memmove.obj) MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _strtol already defined in LIBCD.lib(strtol.obj) LINK : warning LNK4098: defaultlib "MSVCRTD" conflicts with use of other libs; use /NODEFAULTLIB:library fltkd.lib(Fl_x.obj) : error LNK2001: unresolved external symbol __imp___TrackMouseEvent@4 Debug/hello.exe : fatal error LNK1120: 1 unresolved externals Error executing link.exe. hello.exe - 11 error(s), 4 warning(s) Каким образом избавиться от ошибок переопределения??? |
|||
|
||||
| ManiaK |
|
|||
![]() Homo Sapience ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1145 Регистрация: 3.8.2004 Где: ИУ5-93 Репутация: 5 Всего: 29 |
В настройках проекта есть список подключаемых lib-библиотек. У тебя в двух из них (MSVCRTD.lib и LIBCD.lib) определены функции с одинаковыми именами. Это и вызывает ошибку. Нужно залезть в настройки и отключить библиотеку MSVCRTD. Плюс ко всему, у тебя ещё не определена используемая функция TrackMouseEvent. Тоже покопайся - может файл какой забыл подключить или ещё что-нибудь.
|
|||
|
||||
| Stajor |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 11.7.2005 Репутация: нет Всего: нет |
Дело в том, что явного подключения, в свойствах проекта, этих библиотек нет (отсутствуют и MSVCRTD.lib и LIBCD.lib). Попробовал поставить в игнор MSVCRTD.lib, так ошибок стало еще больше. А вот игнор LIBCD.lib дал результат, что ошибок стало намного меньше (ругается как раз таки на symbol __imp___TrackMouseEvent@4 в подключенной библиотеке fltkd.lib).
Это сообщение отредактировал(а) Stajor - 11.7.2005, 14:36 |
|||
|
||||
| ManiaK |
|
|||
![]() Homo Sapience ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1145 Регистрация: 3.8.2004 Где: ИУ5-93 Репутация: 5 Всего: 29 |
TrackMouseEvent - не из WinAPI случаем функцийка-то?.. Что-то у тебя там с настроечками..
|
|||
|
||||
| Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
unresolved symbol TrackMouseEvent - это однозначно надо подключать user32.lib.
Остальные ошибки... похоже, что кто-то пытается одновременно прилинковать и static и shared версию RTL. Попробуйте поменять в настройках проекта версию RTL - /MDd вместо /MLd, или наоборот. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
| Stajor |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 11.7.2005 Репутация: нет Всего: нет |
2ManiaK
Согласен, что скорее всего дело в настройках, но вот как правильно все настроить нигде пока не нашел. 2Void Ошибка осталась только одна - fltkd.lib(Fl_x.obj) : error LNK2001: unresolved external symbol __imp___TrackMouseEvent@4, но user32.lib была подключена изначально (идет сразу за подключением kernel32.lib). А вот версию RTL что то я найти немогу (наверное уже перегреваться стал), может подскажешь... Сори, нашел, изменил, никакого эфекта, ошибка осталась по прежнему Это сообщение отредактировал(а) Stajor - 12.7.2005, 12:15 |
|||
|
||||
| Stajor |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 11.7.2005 Репутация: нет Всего: нет |
Так, нашел...
Надо было еще подключить MS либу COMCTL32.LIB...(и нигде же в мануале об этом ничего не сказано) З.Ы Интересно, а какие же проблемы будут при переносе проекта в *nix Это сообщение отредактировал(а) Stajor - 12.7.2005, 12:37 |
|||
|
||||
| Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 10 Всего: 93 |
Stajor
А он просто не будет компилиться и всё Где ж ты в никсах найдёшь, ну например, тот же comctrl32.lib? -------------------- Да. Именно так. |
|||
|
||||
| Stajor |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 11.7.2005 Репутация: нет Всего: нет |
Тогда каким образом можно на VC написать, переносимую на другую систему, программу |
|||
|
||||
| ManiaK |
|
|||
![]() Homo Sapience ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1145 Регистрация: 3.8.2004 Где: ИУ5-93 Репутация: 5 Всего: 29 |
Необходимо использовать что угодно, но только не MFC/WTL/WinAPI а также всё, что завязано на Windows. Нужно использовать кроссплатформенные библиотеки. А ещё лучше - перейти на gcc компилятор; в Win32 есть для него хорошая оболочка (не VC конечно, но всё же) - DevCpp. |
|||
|
||||
| Stajor |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 11.7.2005 Репутация: нет Всего: нет |
Что-то я тогда не врубаюсь в смысл предложения команды разработчиков FLTK подключения этой либы к VC... Тем более в приложении не используется ни одна функция API, работу с ней ведет библиотека. И каким образом приложение будет что либо (кроме консоли конечно) выводить на экран, если она не будет знать как это делать??? Каким макаром она будет общаться с системой (и не важно какая это система)??? |
|||
|
||||
| ManiaK |
|
|||
![]() Homo Sapience ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1145 Регистрация: 3.8.2004 Где: ИУ5-93 Репутация: 5 Всего: 29 |
В таких библиотеках, как MFC нет разделения на "физический" уровень (работа с API Оси) и "пользовательский" (инструменты, доступные программисту-пользователю библиотеки). Потому в ней нельзя писать приложения, которые необходимо переносить на другие платформы - убьёсся. Про WinAPI и говорить нечего - там вообще напрямую с "железом". Про FLTK ничего не слышал.
Писать кроссплатформенные библиотеки на VC можно, но, как мне кажется, несколько неразумно и порой даже опасно. Стандарт Си++ только на бумаге, в действительности почти каждый компилятор обладает своими спец. особенностями. В тех же никсах VC, зато есть gcc. Потому и говорю - писать кроссплатформенные программы лучше на кроссплатформенных же компиляторах. Лучше, но необязательно. |
|||
|
||||
| srd |
|
|||
![]() Нереварин ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: 27 Всего: 49 |
Что-то я не понимаю, причём здесь MFC?
FLTK - это нормальная кросс-платформенная библиотека. При её сборке под *nix используются юниксовые либы, при сборке под Windows - Win32 библиотеки. Вот последнии ты и забыл подключить (это про __imp___TrackMouseEvent@4). Что касается LIBCD.lib, то игнорирование этих сообщений здесь не поможет. Лучше разберись, с какой версией CRT ты собрал FLTK, и настрой свой проект на ту же версию CRT. Точно не помню, кажется FLTK по-умолчанию собирается с Multithreaded Shared Release CRT. -------------------- Не смей читать мою подпись!!! |
|||
|
||||
| Stajor |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 11.7.2005 Репутация: нет Всего: нет |
Да, именно из-за версии-то все проблемы и были *))). (Хотя игнор LIBCD.lib тоже помог).
Вот тут я согласен (каким образом проект, написаный с помощью флтк, мог бы работать самостоятельно, не используя функций самой системы???). |
||||
|
|||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |