Online video hd

Смотреть армянское видео

Официальный сайт 4stupeni 24/7/365

Смотреть видео бесплатно

NeonLight_Child 06.01.2010 14:28

Linux GamesКомпиляция своих линуховых игр для венды

Игры, которые я пишу для линуха, теперь стало возможным компилировать для/в венде. Большое Спасибо Tamahome с форума gamedev.ru. В своих играх я использую связку из С++ + SDL + OpenGL. Для компиляции игры в *.exe для, делаем следущее:

1)В начале *.cpp файла программы добавляем:
1
2
3
#ifdef __WIN32__
#include <windows.h>
#endif


далее, ищем функцию main() и меняем ее на:
1
2
3
4
5
6
7
8
#ifdef __WIN32__
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow){
#else
int main(int argc, char **argv){
#endif


Все, теперь один и тот же текст программы можно компилировать и в вайне/винде (об этом ниже), и, по старому-через команду make в линухе.

2) Для компиляции программы в *.exe в линухе я установил wine (для компиляции в венде, вероятно, все следущие действия будут аналогичными). Многие скажут, что, дескать вайн не ТРУ, но вайн всеравно будет необходим для последущей проверки результата компиляции.

3) Качаем вендовую IDE+gcc отсюда:http://downloads.sourceforge.net/codeblocks/codeblocks-8.02mingw-setup.exe. Под вайном это IDE заводится без проблемм. Под линем работать в ней мы не будем (я предпочитаю geany), а, вот, для компиляции *.exe использовать-самое оно. А в венде для работы ее можно использовать.

4) После, идем на http://www.libsdl.org/projects/ и качаем SDL-ные библиотеки. Я скачивал эти (они не все нужны, просто "чтобы было"):

SDL_Cbs, SDL_image, SDL_mixer, SDL_net, SDL_rtf, SDL_ttf.

Качаем все это из подразделов Binary/Win32. На примере SDL_mixer - это выглядит так: SDL_mixer-1.2.11-win32.zip(это bin) и SDL_mixer-devel-1.2.11-VC.zip (это devel).Не обращаем внимания, если написано что хедеры для VC. На самом деле все подходит без всяких правок. Расспаковываем. Из bin-ов, в последствии, будем набирать необходимые dll для скомпиленного в *.exe проекта (ложить в папку проекта).А в devel-е обычно находятся папки include и lib, их необходимо скопировать в соответствующие папки в %HOME FOLDER%/.wine/drive_c/Progrаmm Files/CodeBlocks/MinGW.

5) Теперь, качаем саму SDL. Идем на http://www.libsdl.org/download-1.2.php и качаем из подраздела Development Libraries/Win32 что-то, похожее на это, SDL-devel-1.2.14-mingw32.tar.gz (Mingw32). Также, оттуда подбираем необходимую SDL.DLL для нашего будущего проекта: подраздел Runtime Libraries/Win32, SDL-1.2.14-win32.zip (ложим в папку проекта). Расспаковав SDL-devel-1.2.14-mingw32.tar.gz, видим, что это один в один папка MinGW. Дополняем НАШУ MinGW этим содержимым.

6) Теперь, запускаем вайновый CodeBlocks. Открываем наш *.cpp проект. Перед его компиляцией в *.exe необходимо подлинковать нужные либы (действие, аналогичное созданию make файла для компиляции в лине). Для этого ползем к верхним менюшкам.
Settings->Compiler and Debuger->откроется окно, по умолчанию в нем стоим на разделе Global Compiler Settings-> вкладка Linker Settings->кнопка Add под левой колонкой->кнопка с тремя точками->нас просят указать нужные библиотеки, идем в папку Codeblocks/MinGW/lib/, и, удерживая Ctrl, выбираем следущие либы:

SDL_image.lib, SDL_mixer.lib, SDL_ttf.lib, libSDL.dll.a, libSDLmain.a, libopengl32.a, libglaux.a, libglu32.a, libglut.a, libglut32.a.

Возможно среди этих библиотек есть лишние.

7)Теперь возможна компиляция проекта в вендовый *.exe - кнопка с шестерней Build или Ctrl+F9. Все, exe готов.

В качестве примера, можно посмотреть последнюю версию SwibPlex.


Тэги:
+ 8 -
Похожие Поделиться

NeonLight_Child 06.01.2010 14:39 #
+ 1 -
и за что минусуют?
booley 06.01.2010 15:20 #
+ 2 -
Нет ли в 1) ошибки?
#include <здесь_должно_быть_что-то,имхо>

Какие еще игры, кроме Свибплекса? Стало интересно.
NeonLight_Child 06.01.2010 19:25 #
+ 1 -
Еще делал бомж сурвайвер-надо не дать расстащить кучу припасов.
Последняя версия здесь:http://narod.ru/disk/16546912000/v7.zip.html
Еще есть зачатки карточной игры на основе ККИ "Берсерк", но это только зачатки.
Еще делаю какойто скрул шутер =)
NeonLight_Child 06.01.2010 19:35 #
+ 0 -
спасибо поправил там должно быть
#include
NeonLight_Child 06.01.2010 19:37 #
+ 0 -
#include скобка windows.h скобка, скобки и то что между ними не пишется-хтмл теги:(
predator 06.01.2010 15:47 #
+ 1 -
спасибо, очень интересно
predator 06.01.2010 15:48 #
+ 2 -
может продолжите писать про game dev для линукса может кто заинтересуется и под линукс появится большее интересных игр
Jazz 06.01.2010 15:58 #
+ 1 -
gamedev.ru никогда не заменит ни id Software, ни Epic Games :)
Username 07.01.2010 16:12 #
+ 0 -
ни матьего Valve :(
booley 06.01.2010 16:01 #
+ 0 -
Я заинтересовался :)
Если желание не пропадет, может что-нибудь и сделаю.
NeonLight_Child 06.01.2010 19:25 #
+ 0 -
попробую =)
NeonLight_Child 06.01.2010 19:30 #
+ 1 -
Если эта тема интересна,то о ней уже можно почитать. Например, есть электронный журнал lingametech, начиная со второго номера, они пишут о создании игр на Си с использованием SDL и OpenGL. Что, в принципе, я и делаю.
Jazz 06.01.2010 15:56 #
+ 0 -
Не совсем понял, о чём статья. По сути все пункты кроме первого не имеют отношения к кросскомпиляции.
toshcka 06.01.2010 17:24 #
+ 0 -
а почему они должны иметь отношение к кросскомпиляции?
Jazz 06.01.2010 17:47 #
+ 0 -
Наверное, потому что это инструкция по сборке sdl-приложения под Windows, а сайт называется welinux. Или я что-то упустил?
Jazz 06.01.2010 17:50 #
+ 0 -
Даже, чтобы предупредить непонимание, сборка sdl-приложения под Windows с использованием windows-библиотек и windows-компилятора.
NeonLight_Child 06.01.2010 19:34 #
+ 0 -
Просто я был заинтересован в этой теме. В свое вреемя я не нашол этого материала, когда он был необходим. Я думаю, что процесс кросскомпиляции в линуховом code::blocks будет аналогичным. Если есть вайн, то почему его нельзя использовать для компиляции виндовых приложений?
galaxyman 06.01.2010 21:36 #
+ 0 -
спасибо за статью и наводку на lingametech
NickNill 06.01.2010 21:53 #
+ 0 -
и это все что нужно?а если там не только ехе, а и либы еще и т.п?
NeonLight_Child 06.01.2010 22:09 #
+ 0 -
а dll разве не либы?
NickNill 06.01.2010 23:09 #
+ 0 -
я имею ввиду если игра не с одного ехе состоит, то все-равно больше ничего не надо изменять?
NeonLight_Child 06.01.2010 23:29 #
+ 0 -
Не совсем понял о чем ты, может пример приведешь? По-моему, надо править только файл *.cpp проекта, остальные-не трогаем. А раз в проекте один cpp, то и exe будет только один.
NickNill 06.01.2010 23:59 #
+ 0 -
в папке с игрой обычно куча всяких dll. ехе то ты скомпилишь, а dll? или оно все в ехе слинкует?
NeonLight_Child 07.01.2010 00:31 #
+ 0 -
не туда ответил(
NeonLight_Child 07.01.2010 00:30 #
+ 0 -
Посмотри 4). Там пример есть с SDL_mixer, архив с названием SDL_mixer-1.2.11-win32.zip содержит файл DLL-ки необходимые для работы библиотеки SDL_mixer. Эти DLL подкидывать в папку к exe-шнику. Я так понял, exe-шник после компиляции уже будет знать об их существовании.
NickNill 07.01.2010 22:27 #
+ 0 -
а если ты делаешь собственные?
NeonLight_Child 07.01.2010 23:32 #
+ 0 -
насчет собственных dll ничего сказать не могу, ни разу их не делал

Смотреть видео онлайн

Онлайн видео бесплатно