Форум программистов, компьютерный форум CyberForum.ru

Сборки MinGW(GCC-win32/win64) от niXman - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Построение и программная реализация автоматных моделей языков http://www.cyberforum.ru/cpp/thread438991.html
Доброе время суток всем. Будьте так любезны кто знает или умеет напишите пожалуйста примеры конечных автоматов. Можно в принципе и на Delphi толь тогда это не тот раздел. И всё же помагите пожулуйста разобраться в Них(КА). спасибо заранее.
C++ Кто может собрать оффсет из crossfire в dll всем привет. я с помощью программы ollydbg нашёл оФФсет игры crossfire ,я могу написать вам его,и чтобы вы его собрали в dll для читы плиз оч нужно http://www.cyberforum.ru/cpp/thread438749.html
C++ C++ и CS 1.6
Доброго времени суток! У меня возник вопрос, как средствами C++ узнать SteamID клиента CS 1.6 Хотя бы такой вариант! Запускаем созданную программу, затем игру cs 1.6 и в программе появляется SteamID в числовом формате! Если кто нибудь может чем то помоч, заранее огромное спасибо!
Модуль-посредник для wtsapi32.dll C++
Здравствуйте. Вот пытаюсь написать модель-посредник для wtsapi32.dll. Судь заключается в том, что этот модуль заменяет оригинальный и просто перенаправляет все на оригинальный функции. При написании функции-посредника WTSEnumerateSessionsW я столкнулся с проблемой. Результат выполнения равен 0. Эта функция перечисляет сессии в диспетчере задач. Если я заменю библиотеку на свою, то список вообще...
C++ Последние драфты http://www.cyberforum.ru/cpp/thread435272.html
Приветствую. А можно узнать у вас ссылки на последние драфты по C/C++ на данный момент? C99 (N897) — http://open-std.org/JTC1/SC22/WG14/www/docs/n897.pdf C11 (N1548) — http://open-std.org/JTC1/SC22/WG14/www/docs/n1548.pdf C++11 (N3242) — http://open-std.org/JTC1/SC22/WG21/docs/papers/2011/n3242.pdf
C++ Звуковой драйвер не сообщяет о завершение воспроизведения void CALLBACK func (HWAVEOUT hwi, UINT Msg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2){ if (Msg == WOM_OPEN) std::cout<<"open"<<std::endl; if (WOM_DONE == Msg){ // Не выполняется ... std::cout<<"end_play"<<std::endl; sound_play * pClass = (sound_play * )dwInstance; pClass->buffer->pop(); pClass->start = true; pClass->play(); } } подробнее

Показать сообщение отдельно
niXman
Эксперт C++
3134 / 1446 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
25.03.2012, 01:41  [ТС]
Всем привет.

Если вдруг кто не знает, mingw-builds - это проект предоставляющие сборки компилятора GCC для Windows платформы, т.е. MinGW.

Итак...
До сих пор, проект предоставлял сборки с двумя типами реализации исключений: 1)dwarf, 2)sjlj(1, 2).
Сборки использующие dwarf, будут исключены из последующих сборок проекта mingw-builds.
Связанно это с двумя причинами:
1. dwarf, для windows ОС - это инородный способ реализации исключений, он не может работать правильно в windows из-за того, что реализация как С++ так и Си(SEH) *исключений в компиляторе MSVC использует SJLJ. В связи с этим, возникают трудноуловимые ошибки связанные с разрушением стека и пробросом/ловлей исключений между .dll модулей. Мнение разработчиков CRT для MinGW(mingw-w64) тут.
2. и вторая причина, вытекающая из первой - отсутствие реализации dwarf для windows-x86_64.

Посему, пользователям dwarf сборок придется пересобирать либы. Увы...

С этого момента, проект mingw-builds предоставляет сборки для двух хостов: a)i686, b)x86_64.
Каждая такая сборка, является двухцелевым кросс-компилятором. Компилятор для i686 хоста по умолчанию собирает для i686 цели. Компилятор для x86_64 хоста по умолчанию собирает для x86_64 цели.

Для того, чтоб при помощи компилятора для i686 хоста собрать для x86_64 - при компиляции и линковке добавляйте флаг -m64.
Для того, чтоб при помощи компилятора для x86_64 хоста собрать для i686 - при компиляции и линковке добавляйте флаг -m32.

Разумеется, все зависимости цели должны быть собраны соответствующим образом.

Теперь о зависимостях цели от .dll модулей поставляемых в составе компилятора(libstdc++-6.dll, etc...).
Как правило, при использовании MinGW, путь к mingw/bin прописывается в PATH. Все необходимые для хоста .dll модули так же находятся в mingw/bin. По этому, проблем с выполнением полученных исполняемых файлов нет. Но при использовании кросс-компилятора все немного сложнее.
Если производится сборка при которой host==target - тут все как обычно, ибо .dll модули находятся в mingw/bin. Однако, в случаях когда host!=target, .dll модули оказываются недоступными для целевого исполняемого файла.
Для i686 компилятора, .dll модули для x86_64 цели располагаются в mingw/i686-w64-mingw32/lib64.
Для x86_64 компилятора, .dll модули для i686 цели располагаются в mingw/x86_64-w64-mingw32/lib32.

Если что не понятно - задавайте вопросы.

Сборка для i686 уже готова. Со сборкой для x86_64 хоста возникли некоторые сложности. На страницу проекта пока не выгружал. Хочу одновременно.

Всем спасибо.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru