Oberon space

General Category => Общий раздел => Тема начата: ilovb от Ноябрь 15, 2012, 06:17:16 pm

Название: MinGW
Отправлено: ilovb от Ноябрь 15, 2012, 06:17:16 pm
Адепты CPP помогите разобраться. Скачал я http://nuwen.net/mingw.html (http://MinGW)  и сразу проблема.
Пытаюсь скомпилить сие:
Цитата: c:\sources\hello.cpp
#include <stdio.h>

int main (int argc, char* argv[]) {
 printf("hello world\n");
 return 0;
}

MinGW лежит в c:\MinGW
В PATH прописал "c:\MinGW\bin"

Пишу в FAR'е "g++ c:\sources\hello.cpp"

Получаю:
Цитировать
g++: error: CreateProcess: No such file or directory
???
Название: Re: MinGW
Отправлено: ilovb от Ноябрь 15, 2012, 06:23:15 pm
Пардон, ссылку испортил. Повторю:
http://nuwen.net/mingw.html
Название: Re: MinGW
Отправлено: valexey_u от Ноябрь 15, 2012, 06:38:46 pm
Стандартное лекарство для винды пробовал? То есть перезагрузку :-)
Название: Re: MinGW
Отправлено: ilovb от Ноябрь 15, 2012, 06:51:45 pm
Пробовал. Не помогло.

И я не один такой кстати (https://www.google.ru/#hl=ru&newwindow=1&sclient=psy-ab&q=g%2B%2B:+error%3A+CreateProcess%3A+No+such+file+or+directory&oq=g%2B%2B:+error%3A+CreateProcess%3A+No+such+file+or+directory&gs_l=serp.3..0j0i8i30.2030730.2030730.2.2031257.1.1.0.0.0.0.296.296.2-1.1.0...0.0...1c.1.wmMYKSGZSdQ&pbx=1&bav=on.2,or.r_gc.r_pw.r_cp.r_qf.&fp=a655bcdb63976264&bpcl=38625945&biw=1366&bih=643)
Название: Re: MinGW
Отправлено: vlad от Ноябрь 15, 2012, 07:06:58 pm
Пробовал. Не помогло.

А скачать нормальный виндовый компилятор? :) То бишь студию экспресс.
Название: Re: MinGW
Отправлено: valexey_u от Ноябрь 15, 2012, 07:09:10 pm
Пробовал. Не помогло.

И я не один такой кстати (https://www.google.ru/#hl=ru&newwindow=1&sclient=psy-ab&q=g%2B%2B:+error%3A+CreateProcess%3A+No+such+file+or+directory&oq=g%2B%2B:+error%3A+CreateProcess%3A+No+such+file+or+directory&gs_l=serp.3..0j0i8i30.2030730.2030730.2.2031257.1.1.0.0.0.0.296.296.2-1.1.0...0.0...1c.1.wmMYKSGZSdQ&pbx=1&bav=on.2,or.r_gc.r_pw.r_cp.r_qf.&fp=a655bcdb63976264&bpcl=38625945&biw=1366&bih=643)

Нашел винду. Поставил. Проверил. Все работает отлично.
Винда, если что - Win7 домашний бейсик 64 бита
Название: Re: MinGW
Отправлено: valexey_u от Ноябрь 15, 2012, 07:09:39 pm
Пробовал. Не помогло.

А скачать нормальный виндовый компилятор? :) То бишь студию экспресс.

Тем что студия так плюсам нормально и не научилась. Современному стандарту.
Название: Re: MinGW
Отправлено: ilovb от Ноябрь 15, 2012, 07:18:26 pm
Нашел винду. Поставил. Проверил. Все работает отлично.
Винда, если что - Win7 домашний бейсик 64 бита
Какой дистрибутив? Как ставил?

Я покурил это:
http://nuwen.net/mingw.html#install

Если открыть консоль через open_distro_window.bat, то все работает.
Но как избавиться от этих батников пока не пойму.
Название: Re: MinGW
Отправлено: ilovb от Ноябрь 15, 2012, 07:20:10 pm
А скачать нормальный виндовый компилятор? :) То бишь студию экспресс.

Студия у меня есть. Я хочу с gcc разобраться и прикрутить его к ST2  :)
Название: Re: MinGW
Отправлено: ilovb от Ноябрь 15, 2012, 07:22:06 pm
Винда, если что - Win7 домашний бейсик 64 бита

У меня Win7 максимальная 64 бита
Название: Re: MinGW
Отправлено: valexey_u от Ноябрь 15, 2012, 07:23:58 pm
Нашел винду. Поставил. Проверил. Все работает отлично.
Винда, если что - Win7 домашний бейсик 64 бита
Какой дистрибутив? Как ставил?

Я покурил это:
http://nuwen.net/mingw.html#install

Если открыть консоль через open_distro_window.bat, то все работает.
Но как избавиться от этих батников пока не пойму.
А что в том батнике?
Я ставил ровно то что по твоей ссылке.
Какой винда у меня я описал.
Название: Re: MinGW
Отправлено: ilovb от Ноябрь 15, 2012, 07:28:01 pm
Уже снес эту сборку. Качаю официальный дистрибутив:
http://sourceforge.net/projects/mingw/files/MinGW/
Название: Re: MinGW
Отправлено: valexey_u от Ноябрь 15, 2012, 07:31:16 pm
Уже снес эту сборку. Качаю официальный дистрибутив:
http://sourceforge.net/projects/mingw/files/MinGW/
А у меня походу прижилась. Благо там еще и буст искаропки.
Название: Re: MinGW
Отправлено: ilovb от Ноябрь 15, 2012, 07:37:59 pm
Все, мое терпение кончилось:
http://www.picshare.ru/view/509690/

В п...ду этот gcc....  >:(
Название: Re: MinGW
Отправлено: valexey_u от Ноябрь 15, 2012, 07:44:13 pm
Все, мое терпение кончилось:
http://www.picshare.ru/view/509690/

В п...ду этот gcc....  >:(
Не сумел побороть винду? :-)
По моему, тебе проще всего было бы разобраться чем отличаются те батники от того что сделал ты. Ты в фаре ведь в пути mingw/bin вставлял? Ну, то есть: SET PATH=%PATH%;C:\MinGw\bin говорил?
Название: Re: MinGW
Отправлено: ilovb от Ноябрь 15, 2012, 07:45:55 pm
Ну да...
И плюс еще это добавил:
Цитировать
c:\MinGW\libexec\gcc\i686-pc-mingw32\4.7.2\
Название: Re: MinGW
Отправлено: valexey_u от Ноябрь 15, 2012, 07:49:34 pm
Ну да...
И плюс еще это добавил:
Цитировать
c:\MinGW\libexec\gcc\i686-pc-mingw32\4.7.2\

Собственно вот полный лог работы (без фара, просто в cmd.exe)
C:\Projects\c++>set path=%path%;c:\mingw\bin

C:\Projects\c++>g++ --version
g++ (GCC) 4.7.2
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


C:\Projects\c++>g++ main.cpp

C:\Projects\c++>dir
 Том в устройстве C не имеет метки.
 Серийный номер тома: 8486-26E4

 Содержимое папки C:\Projects\c++

15.11.2012  23:47    <DIR>          .
15.11.2012  23:47    <DIR>          ..
15.11.2012  23:47         1 360 945 a.exe
15.11.2012  23:00               104 main.cpp
               2 файлов      1 361 049 байт
               2 папок  403 457 150 976 байт свободно

C:\Projects\c++>
Название: Re: MinGW
Отправлено: ilovb от Ноябрь 15, 2012, 07:51:39 pm
Батники вообще загадочные:
Цитата: set_distro_paths.bat
@echo off
if not exist "%~dp0bin\gcc.exe" goto epicfail
if "%X_DISTRO%" == "nuwen" goto :eof
set X_DISTRO=nuwen
if exist "%~dp0git\cmd\git.exe" set PATH=%~dp0git\cmd;%PATH%
set PATH=%~dp0bin;%PATH%
goto :eof

:epicfail
color 4f
echo ERROR: You must run %~nx0 from the root of the distro.
echo        Don't copy or move this batch file.
title ERROR
goto :eof

Цитата: open_distro_window.bat
@echo off
if not exist "%~dp0bin\gcc.exe" goto epicfail1
if not exist "%~dp0set_distro_paths.bat" goto epicfail2
cmd /k ""%~dp0set_distro_paths.bat" && title MinGW"
goto :eof

:epicfail1
set X_ERR1=ERROR: You must run %~nx0 from the root of the distro.
set X_ERR2=       Don't copy or move this batch file.
set X_ERR3=       However, it's okay to create a shortcut to this batch file.
cmd /t:4f /k "echo %X_ERR1% && echo %X_ERR2% && echo %X_ERR3% && title ERROR"
goto :eof

:epicfail2
set X_ERR1=ERROR: set_distro_paths.bat is missing from the root of the distro.
set X_ERR2=       Don't move or delete that batch file.
cmd /t:4f /k "echo %X_ERR1% && echo %X_ERR2% && title ERROR"
goto :eof
Название: Re: MinGW
Отправлено: ilovb от Ноябрь 15, 2012, 07:54:00 pm
Собственно вот полный лог работы (без фара, просто в cmd.exe)

У меня так работает, но только если открыть консоль через open_distro_window.bat.
Просто cmd.exe не прокатывает...
Название: Re: MinGW
Отправлено: valexey_u от Ноябрь 15, 2012, 07:55:20 pm
Да, нюанс - я качал вот это:
mingw-9.4-without-git.exe (19.4 MB) : This is smaller, if you've already installed git.
Название: Re: MinGW
Отправлено: ilovb от Ноябрь 15, 2012, 07:56:57 pm
Я тоже это качал.

И кстати у меня например --version показывает. Т.е. g++.exe доступен. Вот только компиляция не проходит
Название: Re: MinGW
Отправлено: valexey_u от Ноябрь 15, 2012, 08:01:28 pm
Я тоже это качал.

И кстати у меня например --version показывает. Т.е. g++.exe доступен. Вот только компиляция не проходит
А ты пробовал просто говорить g++ main.cpp, без указания полного пути и находяcь в нужном каталоге?
Название: Re: MinGW
Отправлено: ilovb от Ноябрь 15, 2012, 08:07:59 pm
Погоди ка... а так сработало:
Цитировать
C:\Projects\c++>set path=%path%;c:\mingw\bin

Я это делал через интерфейс...
Название: Re: MinGW
Отправлено: valexey_u от Ноябрь 15, 2012, 08:09:52 pm
Погоди ка... а так сработало:
Цитировать
C:\Projects\c++>set path=%path%;c:\mingw\bin

Я это делал через интерфейс...
Какой такой интерфейс? Ручками PATH засеттить всегда надежнее :-) Этой гуйни в виндах слишком много, я в ней теряюсь. Она всегда лжет!
Название: Re: MinGW
Отправлено: ilovb от Ноябрь 15, 2012, 08:12:15 pm
Ну я вот так делал:
http://www.java.com/ru/download/help/path.xml

И сейчас у меня в PATH так:
Цитировать
C:\Python33\;C:\Program Files (x86)\AMD APP\bin\x86_64;C:\Program Files (x86)\AMD APP\bin\x86;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files (x86)\Lua\5.1;C:\Program Files (x86)\Lua\5.1\clibs;C:\Program Files\TortoiseSVN\bin; c:\mingw\bin
Название: Re: MinGW
Отправлено: valexey_u от Ноябрь 15, 2012, 08:14:47 pm
Ну я вот так делал:
http://www.java.com/ru/download/help/path.xml

И сейчас у меня в PATH так:
Цитировать
C:\Python33\;C:\Program Files (x86)\AMD APP\bin\x86_64;C:\Program Files (x86)\AMD APP\bin\x86;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files (x86)\Lua\5.1;C:\Program Files (x86)\Lua\5.1\clibs;C:\Program Files\TortoiseSVN\bin; c:\mingw\bin

Это у тебя правда так, или ты думаешь что у тебя так?
Что тебе выдает в консоли команда PATH?
Название: Re: MinGW
Отправлено: ilovb от Ноябрь 15, 2012, 08:16:47 pm
Вот забавный лог:
Цитировать
Copyright © 1996-2000 Eugene Roshal, Copyright © 2000-2012 Far Group

C:\sources>g++ c:\sources\hello.cpp -o hello.exe
g++.EXE: error: CreateProcess: No such file or directory

C:\sources>echo %path%
C:\Program Files (x86)\Far Manager\ConEmu;C:\Python33\;C:\Program Files (x86)\AMD APP\bin\x86_64;C:\Program Files (x86)\AM
D APP\bin\x86;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Progr
am Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files (x86)\Lua\5.1;C:\Program Files (x86)\Lua\5.1\clibs;C:
\Program Files\TortoiseSVN\bin; c:\mingw\bin

C:\sources>set path=%path%;c:\mingw\bin

C:\sources>echo %path%
C:\Program Files (x86)\Far Manager\ConEmu;C:\Python33\;C:\Program Files (x86)\AMD APP\bin\x86_64;C:\Program Files (x86)\AM
D APP\bin\x86;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Progr
am Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files (x86)\Lua\5.1;C:\Program Files (x86)\Lua\5.1\clibs;C:
\Program Files\TortoiseSVN\bin; c:\mingw\bin;c:\mingw\bin  :o

C:\sources>g++ c:\sources\hello.cpp -o hello.exe

И все нормально скомпилилось...
Название: Re: MinGW
Отправлено: valexey_u от Ноябрь 15, 2012, 08:18:30 pm
Ну я вот так делал:
http://www.java.com/ru/download/help/path.xml

И сейчас у меня в PATH так:
Цитировать
C:\Python33\;C:\Program Files (x86)\AMD APP\bin\x86_64;C:\Program Files (x86)\AMD APP\bin\x86;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files (x86)\Lua\5.1;C:\Program Files (x86)\Lua\5.1\clibs;C:\Program Files\TortoiseSVN\bin; c:\mingw\bin

Все, поздравляю. Я воспроизвел твою ошибку.
У тебя пробел лишний перед c:\minwg :-D
У тебя так:
..TortoiseSVN\bin; c:\mingw\bin
А должно быть так:
TortoiseSVN\bin;c:\mingw\bin

Так что gcc не виноват - это кривые руки и винда постарались :-D
Название: Re: MinGW
Отправлено: ilovb от Ноябрь 15, 2012, 08:21:21 pm
Точно! Заработало. Большое спасибо.
Блин я и не подозревал что пробел может быть помехой. Тупая венда...
Название: Re: MinGW
Отправлено: ilovb от Ноябрь 15, 2012, 08:23:15 pm
И в ST2 все работает автоматом. Ничего даже не настраивал.  :)
Название: Re: MinGW
Отправлено: valexey_u от Ноябрь 15, 2012, 08:28:54 pm
И в ST2 все работает автоматом. Ничего даже не настраивал.  :)
А я межтем поставил Qt Creator без Qt и оно mingw этот подхватило автоматом. C++11 оно знает. Так что теперь можно там невозбранно и с удобством всякое писеть. Правда надо проверить что там с отладчиком и донастроить в случае чего.

Да, новичков и оберонщиком теперь можно пугать следующими конструкциями:
[](){}();
Название: Re: MinGW
Отправлено: Romiras от Ноябрь 16, 2012, 10:56:55 am
Тут никто не предлагал Dev-C++. А зря. И колдовать не требуется.
Название: Re: MinGW
Отправлено: valexey_u от Ноябрь 16, 2012, 12:19:52 pm
Тут никто не предлагал Dev-C++. А зря. И колдовать не требуется.
Мне не подходит - мне нужна поддержка линукса, мака и винды (в таком порядке).

Кроме того, не факт что там не пришлось бы колдовать для корректной установки именно самого MinGW.

PS. А оно уже поддерживает C++11? Qt Creator поддерживает, но не всегда идеально.
Название: Re: MinGW
Отправлено: ilovb от Ноябрь 16, 2012, 12:36:56 pm
Qt Creator платный?
Название: Re: MinGW
Отправлено: ilovb от Ноябрь 16, 2012, 12:45:39 pm
Нашел:
Цитировать
Qt is available under GPL v3, LGPL v2 and a commercial license. Learn more about licenses here.
Develop with a Qt commercial license
The Qt commercial license offers varied licensing terms compared to the LGPL. The commercial license of Qt is the correct license to use for the development of proprietary and/or commercial software with Qt where you need to safeguard your development investment to secure your competitive advantage. The Qt commercial license includes support and product updates.
http://qt-project.org/downloads
Название: Re: MinGW
Отправлено: valexey_u от Ноябрь 16, 2012, 12:47:16 pm
Qt Creator платный?
Свободный. То есть доступны исходники под свободной лицензией (LGPL). Также есть официальные бесплатные бинарные сборки под несколько платформ, в том числе под винду.

Тащемто вот: http://qt-project.org/downloads#qt-creator
Название: Re: MinGW
Отправлено: ilovb от Декабрь 04, 2012, 03:23:41 pm
valexey, подскажи плиз как это под виндой скомпилить:
http://ittner.github.com/lua-iconv/

Там makefile видимо нужно подправить, но у меня ума не хватает  :)
Название: Re: MinGW
Отправлено: valexey_u от Декабрь 04, 2012, 03:53:44 pm
valexey, подскажи плиз как это под виндой скомпилить:
http://ittner.github.com/lua-iconv/

Там makefile видимо нужно подправить, но у меня ума не хватает  :)
Сборка под виндами юниксовых тулзень то еще развлечение :-)
Доберусь до винды - попробую потыркать.
Название: Re: MinGW
Отправлено: Губанов Сергей Юрьевич от Декабрь 05, 2012, 08:54:30 am
Сборка под виндами юниксовых тулзень то еще развлечение :-)
Да, пытался я как-то раз Mono под виндой компильнуть. Ниасилил...
Название: Re: MinGW
Отправлено: Jordan от Декабрь 14, 2012, 08:23:20 am
Я использую вот эту сборку. http://code.google.com/p/mingw-builds/downloads/list

"mingw\bin\gcc.exe" main.c

На windows xp библиотек не просит.
Название: Re: MinGW
Отправлено: ilovb от Январь 14, 2013, 01:11:02 pm
#include <windows.h>

int main(){

    HWND hWnd=GetConsoleWindow();

    return 0;
}

error: 'GetConsoleWindow' was not declared in this scope

valexey, подскажи плиз чего ентот MinGW от меня хочет?  В VS2012 компилируется без проблем
Название: Re: MinGW
Отправлено: X512 от Январь 14, 2013, 01:14:34 pm
Надо указать версию Windows, например:
#define _WIN32_WINNT 0x0501 //Windows XP
#include <windows.h>
Название: Re: MinGW
Отправлено: ilovb от Январь 14, 2013, 01:18:46 pm
Спасибо. А где про эти особенности почитать можно? И почему в VS12 этого не требуется?
Название: Re: MinGW
Отправлено: X512 от Январь 14, 2013, 01:22:49 pm
Например здесь (http://msdn.microsoft.com/en-us/library/windows/desktop/aa383745%28v=vs.85%29.aspx). MS VS видимо знает, под каким Windows'ом она работает.
Название: Re: MinGW
Отправлено: ilovb от Январь 14, 2013, 01:23:22 pm
И еще, товарищи, посоветуйте плиз справочник по библиотекам cpp. Нифига не понимаю как во всех этих заголовочных файлах ориентироваться.  :(
Название: Re: MinGW
Отправлено: Valery от Январь 14, 2013, 01:30:06 pm
Если по стандартным - то
1. Стандарт С++ - Бог в помощь... :)
2. Стандарт С - то же самое.

3. MSDN - смотреть helper'ы - там состав указан

Если по виндовым - только MSDN
Название: Re: MinGW
Отправлено: ilovb от Январь 14, 2013, 01:33:35 pm
Например здесь (http://msdn.microsoft.com/en-us/library/windows/desktop/aa383745%28v=vs.85%29.aspx). MS VS видимо знает, под каким Windows'ом она работает.
Спасибо. А кроме MSDN есть учебник какой-нибудь? Типа "Особенности программирования на cpp под Windows"? :)
Просто на MSDN нужно знать что искать, а я пока совсем чайник.... да и сообщения компилятора мало о чем говорят.

И еще вопрос вдогонку: Как в cpp ориентироваться без мануалов?
Название: Re: MinGW
Отправлено: X512 от Январь 14, 2013, 01:44:02 pm
А что вам на WinApi написать понабилось? Этот API уже морально устарел Microsoft его уже почти не обновляет и потихоньку от него пытается отказаться. Есть C#, Qt и другие современные платформы.
Название: Re: MinGW
Отправлено: ilovb от Январь 14, 2013, 01:53:54 pm
Я просто пытаюсь понять азы кодинга на cpp.
На додиезе у меня таких проблем не возникало. Там все логично и понятно :) А вот с cpp чувствую себя неуютно...
Название: Re: MinGW
Отправлено: Valery от Январь 14, 2013, 02:02:05 pm
Спасибо. А кроме MSDN есть учебник какой-нибудь? Типа "Особенности программирования на cpp под Windows"? :)
Просто на MSDN нужно знать что искать, а я пока совсем чайник.... да и сообщения компилятора мало о чем говорят.

И еще вопрос вдогонку: Как в cpp ориентироваться без мануалов?
1. Надо четко отделить стандартный С++ от всего остального. В С++ есть куча стандартных библиотек из С. В С++ есть STL - своя куча стандартных библиотек. Остальное - от операционной системы.
2. Без мануалов - НИКАК. Есть несколько неплохих учебников
 - Страуструп (два гуся :) ) http://www.ozon.ru/context/detail/id/6089823/
 - Стивен Прата  http://www.ozon.ru/context/detail/id/7979735/
 - Стенли Липпман.
У Липпмана есть книжка для начинающих - это очень неплохой учебник: http://www.ozon.ru/context/detail/id/2988768/
А есть книжка для продолжающих: Основы программирования на С++. Я про нее писал рецензию на РСДН - там обложку можно посмотреть. Это из серии C++ in-depth. Книжка 2002 года, всего 256 страниц. Но чтобы въехать в предмет - хватает.
Название: Re: MinGW
Отправлено: valexey_u от Январь 14, 2013, 03:27:24 pm
И еще, товарищи, посоветуйте плиз справочник по библиотекам cpp. Нифига не понимаю как во всех этих заголовочных файлах ориентироваться.  :(
Справочник: http://en.cppreference.com/
Всяко лучше чем MSDN
Название: Re: MinGW
Отправлено: valexey_u от Январь 14, 2013, 03:29:45 pm
А что вам на WinApi написать понабилось? Этот API уже морально устарел Microsoft его уже почти не обновляет и потихоньку от него пытается отказаться. Есть C#, Qt и другие современные платформы.
Развивают и нет, не устарел. Одно время MS действительно пыталась прикопать WinAPI в пользу .net и c#, сейчас курс обратный.
Название: Re: MinGW
Отправлено: ilovb от Январь 14, 2013, 04:26:06 pm
И еще, товарищи, посоветуйте плиз справочник по библиотекам cpp. Нифига не понимаю как во всех этих заголовочных файлах ориентироваться.  :(
Справочник: http://en.cppreference.com/
Всяко лучше чем MSDN
То что надо! Спасибо, valexey.
Название: Re: MinGW
Отправлено: ilovb от Январь 14, 2013, 04:37:23 pm
У Липпмана есть книжка для начинающих - это очень неплохой учебник: http://www.ozon.ru/context/detail/id/2988768/
А есть книжка для продолжающих: Основы программирования на С++. Я про нее писал рецензию на РСДН - там обложку можно посмотреть. Это из серии C++ in-depth. Книжка 2002 года, всего 256 страниц. Но чтобы въехать в предмет - хватает.
Спасибо, Валерий. Остановлюсь пока на Липпмане.  :)
Название: Re: MinGW
Отправлено: DddIzer от Январь 14, 2013, 06:47:24 pm
И еще, товарищи, посоветуйте плиз справочник по библиотекам cpp. Нифига не понимаю как во всех этих заголовочных файлах ориентироваться.  :(
Справочник: http://en.cppreference.com/
Всяко лучше чем MSDN
Это точно, спасибо.
Название: Re: MinGW
Отправлено: ilovb от Март 21, 2013, 06:52:09 pm
Люди, подскажите как в MinGW сделать proxy для dll.

ps Для MS SDK нашел: http://www.freelists.org/post/luajit/The-dreaded-newbie-questions,10
Название: Re: MinGW
Отправлено: ilovb от Март 23, 2013, 12:49:33 pm
Человеки, подскажите как в msvc dll скомпилить.
исходник: https://code.google.com/p/miniz/source/browse/trunk/miniz.c

Делаю так:
cl /c miniz.c
link /DLL /OUT:miniz.dll miniz.obj

в результате dll ничего не экспортирует.

В MinGW делаю так:
gcc -c miniz.c
gcc -s -shared -o miniz.dll miniz.o
И все отлично.
Название: Re: MinGW
Отправлено: ilovb от Март 23, 2013, 01:22:41 pm
Я так понял, что gcc по дефолту все экспортирует, а msvc наоборот. И для последнего нужно создавать def-файл со списком экспортируемых символов.

Можно ли сгенерить этот def-файл автоматически?
Название: Re: MinGW
Отправлено: Berserker от Март 23, 2013, 02:07:32 pm
Эм, а директивы экспорта конкретных процедур в коде используются (__declspec(dllexport))? Или нужно абсолютно всё экспортировать?

Для того, чтобы выходные имена получались без искажения (name mangling), то использование DEF-файла — единственный способ.
Название: Re: MinGW
Отправлено: ilovb от Март 23, 2013, 02:11:17 pm
Товарищи, еще вопрос:
Ключ /MD при компиляции стоит использовать?
Название: Re: MinGW
Отправлено: ilovb от Март 23, 2013, 02:13:24 pm
Эм, а директивы экспорта конкретных процедур в коде используются (__declspec(dllexport))? Или нужно абсолютно всё экспортировать?
Да. Нужно все.
Для того, чтобы выходные имена получались без искажения (name mangling), то использование DEF-файла — единственный способ.
Пичаль. Ну я тут уже нашел утилиту: http://purefractalsolutions.com/show.php?a=utils/expdef
Помогло.
Название: Re: MinGW
Отправлено: ilovb от Март 23, 2013, 02:16:16 pm
Эм, а директивы экспорта конкретных процедур в коде используются (__declspec(dllexport))?
Нет
Название: Re: MinGW
Отправлено: ilovb от Март 23, 2013, 02:23:06 pm
Товарищи, еще вопрос:
Ключ /MD при компиляции стоит использовать?

Или как сделать чтобы зависимость была от MSVCRT.dll, а не от MSVCR110.dll.

Или это все фобии? O_o
Название: Re: MinGW
Отправлено: valexey_u от Март 23, 2013, 02:30:01 pm
Для того, чтобы выходные имена получались без искажения (name mangling), то использование DEF-файла — единственный способ.
В Си нет манглинга имен, соответственно и проблем нет. А что такое def-файл я не знаю :-)
Название: Re: MinGW
Отправлено: Berserker от Март 23, 2013, 03:45:57 pm
mangle — портить, искажать  ;)

DEF-файл содержит перечень экспортируемых идентификаторов в виде: "внешнее имя = внутреннее имя".
Название: Re: MinGW
Отправлено: vlad от Март 23, 2013, 03:55:39 pm
В Си нет манглинга имен, соответственно и проблем нет. А что такое def-файл я не знаю :-)

Оно все равно туда подчеркивание добавляет... Я помню именно поэтому заморачивался с .def файлами. Но это актуально только если потому грузить надо ручками и динамически по имени (и не хочется иметь подчеркивание).
Название: Re: MinGW
Отправлено: valexey_u от Март 23, 2013, 04:39:19 pm
mangle — портить, искажать  ;)

DEF-файл содержит перечень экспортируемых идентификаторов в виде: "внешнее имя = внутреннее имя".

Гм. Я правильно понимаю, что это какая-то особенность мелкомягкого компилятора? Потому как в других компиляторах я ничего подобного вроде бы не встречал.
Название: Re: MinGW
Отправлено: valexey_u от Март 23, 2013, 04:44:28 pm
mangle — портить, искажать  ;)

DEF-файл содержит перечень экспортируемых идентификаторов в виде: "внешнее имя = внутреннее имя".
Я знаю как переводится слово mangle. Так вот, в Си функции экспортируются с именами as is. И это понятно почему.

А С++ язык более богатый, там для того чтобы вызвать функцию неплохо бы знать еще и типы аргументов (функция foo(int) и foo(double) - это две РАЗНЫЕ функции в С++, а в Си foo можно вызвать с любым аргументом и функция может быть только одна с именем foo), поэтому в имя функции вводят еще и типы аргументов (просто потому, что эту инфу больше положить там не куда).

Ровно та же песня, скажем в Аде.
Название: Re: MinGW
Отправлено: Jordan от Май 12, 2013, 06:00:06 pm
Как уменьшить размер exe?

Компилю так "e:\MinGW\bin\g++" -Wall -static -s -O2 main.cpp
весит 600 кб. Если убрать -static требует какие то левые dll.

Что компилю

#include <iostream>
#include <string>

using namespace std;

int main(int argc, char* argv[])
{
  string s = "Hello World!";
  cout<< s <<endl;
}
Название: Re: MinGW
Отправлено: Jordan от Май 12, 2013, 06:05:27 pm
И ещё вопрос. Как избавиться при компиляции от dll в папке проекта. Без dll, g++ ругается, что их нет, хотя в папке mingw они есть.

Вот как это выглядит сейчас.

(http://i46.fastpic.ru/thumb/2013/0512/56/564dc05fe9b85fb8c073329b3a783356.jpeg) (http://fastpic.ru/view/46/2013/0512/564dc05fe9b85fb8c073329b3a783356.png.html)
Название: Re: MinGW
Отправлено: Valery Solovey от Май 12, 2013, 06:13:34 pm
Как уменьшить размер exe?
Для начала можете попробовать натравить strip на объектные файлы, которые получились у Вас в результате трансляции. Если в MinGW есть маны, то обращайтесь за справкой в man strip. Затем, результирующие объектники можете скомпоновать в исполнимый файл.
P.S. Я давно уже с сями баловался, поэтому мог немного ошибиться.
Название: Re: MinGW
Отправлено: DddIzer от Май 12, 2013, 06:22:58 pm
И ещё вопрос. Как избавиться при компиляции от dll в папке проекта. Без dll, g++ ругается, что их нет, хотя в папке mingw они есть.

Вот как это выглядит сейчас.

(http://i46.fastpic.ru/thumb/2013/0512/56/564dc05fe9b85fb8c073329b3a783356.jpeg) (http://fastpic.ru/view/46/2013/0512/564dc05fe9b85fb8c073329b3a783356.png.html)
ощущение, что у вас коряво встал mingw...
Название: Re: MinGW
Отправлено: Geniepro от Май 12, 2013, 06:41:40 pm
Как уменьшить размер exe?

Компилю так "e:\MinGW\bin\g++" -Wall -static -s -O2 main.cpp
весит 600 кб. Если убрать -static требует какие то левые dll.

Всякую отладочную информацию из exe-файла можно убрать программой strip из комплекта утилит gcc, если размер всё ещё велик -- то затем обработать программой NSPACK (http://nspack.apponic.com/), например...
Название: Re: MinGW
Отправлено: Jordan от Май 12, 2013, 07:34:29 pm
опция -s использует strip. Ладно размер экзешника не критичен.

Подключил библиотеку sdl, всё нормально, но выдает ошибку

Цитировать

g:\3>"e:\MinGW\bin\g++" -static -s -O2 -lmingw32 -lSDLmain -lSDL.dll main.cpp
E:\DOCUME~1\┼┬├┼═╚╔\LOCALS~1\Temp\ccf5a61A.o:main.cpp:(.text+0x43): undefined re
ference to `SDL_SetVideoMode'
collect2: ld returned 1 exit status

g:\3>call a.exe
"a.exe" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

g:\3>pause
Для продолжения нажмите любую клавишу . . .

Не может найти функцию SDL_SetVideoMode, но SDL_Init видит.

Гуглил вопрос пишут, что нужно подключить -lSDL, но библиотека подключена.
В чём может быть проблема?
Название: Re: MinGW
Отправлено: Jordan от Май 12, 2013, 07:35:24 pm
Может и правда mingw криво встал.
Название: Re: MinGW
Отправлено: ilovb от Май 12, 2013, 07:40:07 pm
А какой дистрибутив и как ставили?
Название: Re: MinGW
Отправлено: Berserker от Май 12, 2013, 07:42:31 pm
Цитировать
Basically, there's not really anything you can do to reduce that .exe size with a base distribution of mingw. 550kb is about as small as you can get it, because mingw and gcc/g++ in general are bad at stripping unused functions. About 530kb of that is from the msvcrt.a library.

If you really wanted to get into it, you might be able to rebuild the msvcrt.a library with -ffunction-sections -fdata-sections compiler options, and then use the -Wl,--gc-sections linker options when linking your app, and this should be able to strip a lot of that stuff out of there. But if you're just learning C++, rebuilding that library may be a bit advanced.

Or you could just use MSVC, which is great at stripping unused functions. That same bit of code compiled with MSVC produces a 10kb exe.
Название: Re: MinGW
Отправлено: Jordan от Май 12, 2013, 07:44:29 pm
windows xp sp3, mingw ставил веб установщиком версия mingw-get-inst-20120426.exe
Указал папку куда ставить и что нужно скачать с и с++ компилятор.

Сейчас переставлю mingw.
Название: Re: MinGW
Отправлено: ilovb от Май 12, 2013, 07:45:43 pm
А в PATH у вас путь появился для MinGW?
Название: Re: MinGW
Отправлено: DddIzer от Май 12, 2013, 07:48:10 pm
в path  должны быть установлены пути к include, bin, lib директориям мингв.. если конечно вы не используете самопальный make-файл или ворох опций в командной строке
Название: Re: MinGW
Отправлено: Jordan от Май 12, 2013, 07:52:56 pm
А в PATH у вас путь появился для MinGW?

Переустановил так же. Как посмотреть path?

в path  должны быть установлены пути к include, bin, lib директориям мингв.. если конечно вы не используете самопальный make-файл или ворох опций в командной строке

Именно ворох опций

"e:\MinGW\bin\g++" -static -s -O2 -lmingw32 -lSDLmain -lSDL.dll main.cpp
call a.exe
pause     
Название: Re: MinGW
Отправлено: Jordan от Май 12, 2013, 07:54:59 pm
Цитировать
Basically, there's not really anything you can do to reduce that .exe size with a base distribution of mingw. 550kb is about as small as you can get it, because mingw and gcc/g++ in general are bad at stripping unused functions. About 530kb of that is from the msvcrt.a library.

If you really wanted to get into it, you might be able to rebuild the msvcrt.a library with -ffunction-sections -fdata-sections compiler options, and then use the -Wl,--gc-sections linker options when linking your app, and this should be able to strip a lot of that stuff out of there. But if you're just learning C++, rebuilding that library may be a bit advanced.

Or you could just use MSVC, which is great at stripping unused functions. That same bit of code compiled with MSVC produces a 10kb exe.

С ключиками попробую, но MSVC не то, он платный, да и смысл использовать его когда есть бесплатный аналог.
Название: Re: MinGW
Отправлено: DddIzer от Май 12, 2013, 08:10:34 pm
Цитировать
Basically, there's not really anything you can do to reduce that .exe size with a base distribution of mingw. 550kb is about as small as you can get it, because mingw and gcc/g++ in general are bad at stripping unused functions. About 530kb of that is from the msvcrt.a library.

If you really wanted to get into it, you might be able to rebuild the msvcrt.a library with -ffunction-sections -fdata-sections compiler options, and then use the -Wl,--gc-sections linker options when linking your app, and this should be able to strip a lot of that stuff out of there. But if you're just learning C++, rebuilding that library may be a bit advanced.

Or you could just use MSVC, which is great at stripping unused functions. That same bit of code compiled with MSVC produces a 10kb exe.

С ключиками попробую, но MSVC не то, он платный, да и смысл использовать его когда есть бесплатный аналог.
он бесплатный (если ставится отдельно от студии)
Название: Re: MinGW
Отправлено: Jordan от Май 12, 2013, 08:12:07 pm
Сейчас я готов ставить хоть MSVC главное, чтоб заработало.
Название: Re: MinGW
Отправлено: DddIzer от Май 12, 2013, 08:14:00 pm
поставьте wxdev-c++ - при инсталяции уберите галочку с установки виджетов.. и будет у вас искоропки русифицированная настроенная ide c mingw
под консоль либо винапи
Название: Re: MinGW
Отправлено: ilovb от Май 12, 2013, 08:15:53 pm
Jordan, посмотрите начало ветки.

echo %path%
Название: Re: MinGW
Отправлено: Jordan от Май 12, 2013, 08:17:53 pm
Jordan, посмотрите начало ветки.

echo %path%

g:\3>echo E:\Program Files\NVIDIA Corporation\PhysX\Common;E:\WINDOWS\system32;E
:\WINDOWS;E:\WINDOWS\System32\Wbem;C:\WINDOWS;C:\WINDOWS\COMMAND
E:\Program Files\NVIDIA Corporation\PhysX\Common;E:\WINDOWS\system32;E:\WINDOWS;
E:\WINDOWS\System32\Wbem;C:\WINDOWS;C:\WINDOWS\COMMAND

mingw нет.

поставьте wxdev-c++ - при инсталяции уберите галочку с установки виджетов.. и будет у вас искоропки русифицированная настроенная ide c mingw
под консоль либо винапи

Уже качаю.
Название: Re: MinGW
Отправлено: ilovb от Май 12, 2013, 08:28:40 pm
Добавьте "что там у вас"/MinGW/bin в PATH и будет вам щастье
Название: Re: MinGW
Отправлено: Jordan от Май 12, 2013, 08:51:17 pm
Добавьте "что там у вас"/MinGW/bin в PATH и будет вам щастье

Прписал, ошибка осталась.

Цитировать

g:\3>rem "e:\MinGW\bin\g++" -static -s -O2 -lmingw32 -lSDLmain -lSDL.dll main.cp
p

g:\3>SET PATH=e:\Program Files\Dev-Cpp\MinGW32\bin\;E:\Program Files\NVIDIA Corp
oration\PhysX\Common;E:\WINDOWS\system32;E:\WINDOWS;E:\WINDOWS\System32\Wbem;C:\
WINDOWS;C:\WINDOWS\COMMAND

g:\3>g++ -static -s -O2 -lmingw32 -lSDLmain -lSDL.dll main.cpp
E:\DOCUME~1\┼┬├┼═╚╔\LOCALS~1\Temp\ccsbpY8r.o:main.cpp:(.text+0x43): undefined re
ference to `SDL_SetVideoMode'
collect2: ld returned 1 exit status

g:\3>call a.exe
"a.exe" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

g:\3>pause
Для продолжения нажмите любую клавишу . . .
Название: Re: MinGW
Отправлено: DddIzer от Май 12, 2013, 09:23:46 pm

Уже качаю.
после установки
1. Запустите Иде (выбрав русский язык для интерфейса)
2. Создайте консольный проект С++ в отдельной папке
3. Скомпилируйте запустите...  - посмотрите  что создается в папке проекта.. структуру маке файла
 если все работает...
то  в меню Сервис - параметры компилятора..
4. на вкладке опций компилятора - можете поиграться со своими опциями
5. на вкладке каталоги (вкладка библиотеки) добавьте путь к библиотечным файлам SDL - если они есть
    на вкладке включаемые файлы (С,С++) - добавьте путь к  директории содержащей заголовочные файлы  SDL
6. если SDL требует дополнительных опций компилятора то см. п.4. и документацию  SDL
Название: Re: MinGW
Отправлено: DddIzer от Май 12, 2013, 09:35:55 pm
... да забыл - название файла проекта ДОЛЖНО БЫТЬ написано латиницей.
Ну и напоследок прежде чем приступить освоению ( установке) sdl - решите несколько простых  консольных задач (для того, чтобы приобрести хотя бы первичные навыки работы со средой).
Название: Re: MinGW
Отправлено: vlad от Май 13, 2013, 02:54:43 am
Как уменьшить размер exe?

Плюсовая iostream - жирная. Можешь попробовать старые сишные printf, puts и т.д.
Можешь попробовать родной виндовый MSVC - оно есть бесплатное (express edition). Не знаю насколько сильно обрезанное, но точно не фатально (IDE с отладчиком должны быть).