Все знают, что такое Half-Life и что для него полным-полно linux-серверов. Для того чтобы оный заиметь для какого-то мода, нужно его ДЛЛ-ку скомпилить в .so. По умолчанию всё, что сделано на основе Half-Life SDK (server DLL) компилится под линукс (makefile тому подтверждение). Однако, когда я попытался скомпилировать проект, GCC начал грязно ругаться и посылать меня очень далеко и надолго. Итак:
source: C/C++, Half-Life SDK, (если кому интересно, исходники можно взять здесь: http://xwider.wtr.ru/modules.php?op=modload&name=Downloads&file=index... - предыд. версия)
IDE: Code::Blocks
C: GCC 4.2.3-2Ubuntu7
OS: Ubuntu 8.04 x86-64
System: laptop C2D T8300
Суть проблемы: при компиляции вылетает куча совершенно никчёмных warning'ов типа
/home/x/projects/XDM/dlls/ai_basenpc_schedule.cpp||In member function ‘void CBaseMonster::ChangeSchedule(Schedule_t*)’:
/home/x/projects/XDM/dlls/ai_basenpc_schedule.cpp|89|warning: deprecated conversion from string constant to ‘char*’
/home/x/projects/XDM/dlls/ai_basenpc_schedule.cpp||In member function ‘void CBaseMonster::MaintainSchedule()’:
/home/x/projects/XDM/dlls/ai_basenpc_schedule.cpp|242|warning: NULL used in arithmetic
И, что самое главное, ошибок:
error: invalid static_cast from type '<unresolved overloaded function type>' to type 'void (CBaseEntity::*)(CBaseEntity*)'
error: cast from 'const char*' to 'int' loses precision
Как этого избежать? Компилятор MSVC, есснно, всё это кушает за милую душу.
Компилю с флагом c++98. Пытался скомпилить под i386, но ругается, что процессор не тот (CPU ypu selected does not support X86-64 instruction set) - может всё-таки как-нибудь можно скомпилить i386??
PS: никогда ничего в жизни не компилил под linux - уж простите. Всю жизнь прожил в VC 6.0. (^_^)/