• Как подключить .hpp файлы к моему native проекту?

    EXL
    @EXL
    Энтузиаст
    MY_HEADER_PATH := ../src/headers
    
    LOCAL_C_INCLUDES := $(LOCAL_PATH)/$(SDL_PATH)/include \
    				$(LOCAL_PATH)/$(SDL_IMAGE_PATH)/ \
    				$(LOCAL_PATH)/$(SDL_MIXER_PATH)/ \
    				$(LOCAL_PATH)/$(SDL_TTF_PATH)/ \
                                    $(LOCAL_PATH)/$(MY_HEADER_PATH)/


    После этого файлы хэдеры из директории "../src/headers" должны увидеться нормально.
    Но почитай внимательно документацию по Android NDK, в частности там может быть переменная LOCAL_CХХ_INCLUDES := или LOCAL_CPP_INCLUDES :=
    Ответ написан
  • Как вырезать расширение файла?

    EXL
    @EXL
    Энтузиаст
    #!/bin/bash
    OLDIFS=$IFS
    string=$1
    IFS='.'
    string_array=($string)
    len=$(( ${#string_array[@]} - 1 ))
    IFS=$OLDIFS
    echo ${string_array[$len]}


    exl@exl-Lenovo-G560e:~/SandBox > ./token.sh ..log.f
    f
    exl@exl-Lenovo-G560e:~/SandBox > ./token.sh .log.ccc
    ccc
    exl@exl-Lenovo-G560e:~/SandBox > ./token.sh log.qwerty
    qwerty
    Ответ написан
    Комментировать
  • Как установить и запустить wayland с weston'ом?

    EXL
    @EXL
    Энтузиаст
    Есть такой шуточный проект-дистрибутив, - RebeccaBlackOS, который создан специально для того, чтобы можно было удовлетворить любопытство и потрогать Wayland/Weston. Представляет собой LiveCD, который можно запустить через виртуалку. Одна из последних версий датируется 2014-02-24. Еще есть мартовская версия 2014-03-01, правда, каталог, в котором она лежит почему-то датируется 2013-ым годом, хотя образы - 2014-ым.

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

    Как сейчас обстоит ситуация - не знаю. Если будете пробовать - обязательно отпишитесь о работоспособности.

    Кстати, есть ещё Maui project с DE, написанным на Qt5, тоже использует Wayland/Weston. Правда, попробовать этот дистрибутив мне так пока и не довелось. Удачи!
    Ответ написан
  • Почему цикл for не уменьшает значение в префиксной форме?

    EXL
    @EXL
    Энтузиаст
    1. В цикле for нету разницы между постфиксной или префиксной формы декремента/инкремента для переменной-счетчика.

    2. Первый проход цикла осуществляется с начальным значением i. Потом переменная-счетчик изменяется и второй проход цикла уже будет со значением i1 и т.д.

    3. В вашем случае всё было сделано правильно:

    exl@exl-Lenovo-G560e:~/SandBox > cat test.cpp 
    #include <iostream>
    
    int main() {
        int f = 15;
        for(int i = --f; i > 0; --i)
            std::cout << i << " ";
        std::cout << std::endl;
        return 0;
    }
    
    exl@exl-Lenovo-G560e:~/SandBox > g++ test.cpp
    exl@exl-Lenovo-G560e:~/SandBox > ./a.out 
    14 13 12 11 10 9 8 7 6 5 4 3 2 1


    Заметьте, что для значения, которым мы будем инициализировать переменную-счетчик, разница в декременте/инкременте есть:

    exl@exl-Lenovo-G560e:~/SandBox > cat test.cpp 
    #include <iostream>
    
    int main() {
        int f = 15;
        for(int i = f--; i > 0; --i)
            std::cout << i << " ";
        std::cout << std::endl;
        return 0;
    }
    exl@exl-Lenovo-G560e:~/SandBox > g++ test.cpp 
    exl@exl-Lenovo-G560e:~/SandBox > ./a.out 
    15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
    Ответ написан
  • Изучение ассемблера в универе - какую литературу почитать?

    EXL
    @EXL
    Энтузиаст
    Классика - Зубков С.В. - Assembler для DOS, Windows и UNIX
    Ответ написан
    Комментировать
  • Как отрисовать Custom GUI в С++?

    EXL
    @EXL
    Энтузиаст
    QML / Qt рассматривали?
    Ответ написан
    1 комментарий
  • Как исправить проблему компиляции GCC 4.8.2?

    EXL
    @EXL
    Энтузиаст
    Не уверен, но возможно эта страница вам поможет.
    Ответ написан
    Комментировать
  • Почему даже простые Си-программы не компилируются?

    EXL
    @EXL
    Энтузиаст
    Советую, пока не поздно, прекратить пользоваться давно заброшенными IDE и поставить:
    1. Либо готовый для разработки Qt SDK + Qt Creator IDE. В этом комплекте все уже настроено, запускаете Qt Creator, далее в меню File -> New Project or File -> Non Qt Project -> Plain C++ Project и пишете код. Бандл содержит внутри себя рабочий MinGW и отладчик и вам не придётся устанавливать их отдельно.
    2. Либо MS Visual Studio C++ Express любой версии (начиная с 2010). Express-редакции (бесплатной) для подобных программ хватит вам за глаза.

    Лично я бы предпочел первый вариант. А про Dev-Cpp и Code::Blocks лучше забудьте, они достаточно медленно развиваются и с ними куча проблем. В вашем случае внутренняя проблема в линковщике (collect2) MinGW'а, связанная скорее всего с тем, что компилятор, идущий в составе вашей IDE давно не обновлялся, и корректно работать с Windows 8 не может.
    Ответ написан
    1 комментарий
  • Почему SDL_mixer выводит ошибку при Mix_OpenAudio?

    EXL
    @EXL
    Энтузиаст
    @wolf-9830 Раз SDL_mixer ставился из исходного кода, тогда вы где-то ошиблись с зависимостями. Как я понял, вы собираете не старую версию SDL_mixer 1.2, которая сейчас используется огромным количеством софта, а новую SDL_mixer 2.0, пакеты которой пока отсутствуют в репозиториях.

    Смотрите: SDL_mixer является лишь враппером и для проигрывания файлов формата *.ogg, *.flac и *.mp3 использует сторонние библиотеки, такие как libogg/libvorbis, libflac и libmad соответственно.

    С такими зависимостями собрана библиотека SDL_mixer 1.2 в моей системе (она была установлена из репозитория):

    Depends: libflac-dev (>= 1.2.1)
    Depends: libmad0-dev (>= 0.15.1b)
    Depends: libmikmod2-dev (>= 3.1.11)
    Depends: libogg-dev (>= 1.2.0)
    Depends: libsdl-mixer1.2 (= 1.2.12-3)
    Depends: libsdl1.2-dev (>= 1.2.14~)
    Depends: libvorbis-dev (>= 1.2.0)

    Я вижу два выхода из вашей ситуации:

    1. Установить необходимые зависимости из репозиториев:

    sudo apt-get install libflac-dev libmad0-dev libogg-dev libvorbis-dev libmikmod2-dev

    Затем пересобрать SDL_mixer 2.0:

    ./configure --enable-music-mod-mikmod --enable-music-mod-mikmod-shared --enable-music-mp3-mad-gpl --enable-music-ogg --enable-music-flac
    make -j4
    sudo make install

    Обратите внимание на то, что во время конфигурирования необходимые библиотеки (libogg, libflac libmad и др.) определились нормально.

    checking for libmikmod-config... /usr/bin/libmikmod-config
    checking for libmikmod - version >= 3.1.10... yes
    -- dynamic libmikmod -> libmikmod.so.2
    
    ...
    
    checking vorbis/vorbisfile.h usability... yes
    checking vorbis/vorbisfile.h presence... yes
    checking for vorbis/vorbisfile.h... yes
    checking for ov_open_callbacks in -lvorbisfile -lvorbis -logg -lm... yes
    -- dynamic libvorbisfile -> libvorbisfile.so.3
    
    ...
    
    checking for FLAC__stream_decoder_new in -lFLAC... yes
    -- dynamic libFLAC -> libFLAC.so.8
    
    ...
    
    checking for libmad headers... yes

    Это самый простой выход из вашей ситуации.

    2. Второй способ заключается в том, что вы должны скомпилировать самостоятельно все зависимости, необходимые SDL_Mixer 2.0. Я однажды сталкивался с подобным и написал как правильно собирать SDL_mixer (правда версии 1.2 и для MinGW (Windows)), но шаги для GNU/Linux и SDL_mixer 2.0 будут те же самые.
    Это наиболее сложный и времязатратный способ.

    После того, как библиотека с зависимостями собрана, с ее помощью можно проигрывать файлы различных форматов.

    В вашем случае:
    #include <SDL.h>
    #include <SDL_mixer.h>
    
    #include <iostream>
    
    int main(int argc, char *argv[]) {
        SDL_Init(SDL_INIT_EVERYTHING);
    
        Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 1024);
        std::cout << Mix_GetError() << std::endl;
        Mix_Music *mus;
        mus = Mix_LoadMUS("m.ogg");
        std::cout << Mix_GetError() << std::endl;
        Mix_PlayMusic(mus, 1);
    
        SDL_Event event;
        int done = 0;
    
        while(!done && Mix_PlayingMusic()) {
            while (SDL_PollEvent(&event)) {
                if (event.type == SDL_QUIT) {
                    done = 1;
                }
                if (event.type == SDL_KEYDOWN) {
                    if (event.key.keysym.sym == SDLK_ESCAPE) {
                        done = 1;
                    }
                }
            }
        }
    
        Mix_FreeMusic(mus);
        Mix_Quit();
        SDL_Quit();
    }
    Ответ написан
  • Python s60 v2.00: каковы перспективы?

    EXL
    @EXL
    Энтузиаст
    Только если для себя. Перспектив у S60 уже давно нет.
    Если интересна подобная некрофилия, можете ещё посмотреть в сторону Qt SDK для S60 от Nokia. Очень приятный фреймворк.
    Ответ написан
    Комментировать
  • Почему SDL_mixer выводит ошибку при Mix_OpenAudio?

    EXL
    @EXL
    Энтузиаст
    А SDL_Mixer ставился в систему как? Из исходного кода или из пакетов репозитория?
    Ответ написан
  • Как собрать Qt 4.8.5 из исходников для Linux?

    EXL
    @EXL
    Энтузиаст
    Я сталкивался с такой же проблемой. Можете почитать статью по ссылке выше, там весьма подробная инструкция по сборке Qt 4.8.5
    В вкратце, проблема в том, что в вашем окружении рабочего стола (KDE) используется Qt 4.8.4, и соответственно между библиотеками возникает конфликт. Решить его можно так:
    1. Поставить пакет dbus-dev:
    sudo apt-get install libdbus-1-dev
    2. Сконфигурировать Qt приблизительно такой командой:
    ./configure -platform linux-g++ -opensource -confirm-license -xrender -fontconfig -opengl -dbus -prefix /opt/QtSDKs/Qt4.8.5-x86_64-all

    3. Пересобрать.

    Если вам необходима поддержка бэкенда для GStreamer'a (для работы с аудио/видео) - не забудьте указать при конфигурировании -glib -phonon -phonon-backend и доустановить необходимые хедеры.
    Ответ написан
  • Книги о том, как правильно делать игры

    EXL
    @EXL
    Энтузиаст
    Я бы посоветовал Focus on SDL от Ernest'а Pazera. Книжка рассчитана на базовые знания C++.
    Ну и небольшой русскоязычный туториал — Познакомьтесь, SDL.
    На мой взгляд, начинать нужно именно с SDL, а потом уже переходить на более сложные технологии.
    Ответ написан
    Комментировать
  • Motorola Milestone и сошедший с ума экран?

    EXL
    @EXL
    Энтузиаст
    Уважаемый ST4NN, да такая проблема к сожалению возникает у многих.
    Такую же проблему можно наблюдать у многих в тематическом форуме:
    Глючит экран у Motorola Droid/Milestone
    Некоторые винят контролер, а некоторые говорят что софтовая проблема
    Ответ написан
    Комментировать