Oberon space
General Category => Общий раздел => Тема начата: ilovb от Ноябрь 15, 2012, 06:17:16 pm
-
Адепты CPP помогите разобраться. Скачал я http://nuwen.net/mingw.html (http://MinGW) и сразу проблема.
Пытаюсь скомпилить сие:
#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
???
-
Пардон, ссылку испортил. Повторю:
http://nuwen.net/mingw.html
-
Стандартное лекарство для винды пробовал? То есть перезагрузку :-)
-
Пробовал. Не помогло.
И я не один такой кстати (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)
-
Пробовал. Не помогло.
А скачать нормальный виндовый компилятор? :) То бишь студию экспресс.
-
Пробовал. Не помогло.
И я не один такой кстати (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 бита
-
Пробовал. Не помогло.
А скачать нормальный виндовый компилятор? :) То бишь студию экспресс.
Тем что студия так плюсам нормально и не научилась. Современному стандарту.
-
Нашел винду. Поставил. Проверил. Все работает отлично.
Винда, если что - Win7 домашний бейсик 64 бита
Какой дистрибутив? Как ставил?
Я покурил это:
http://nuwen.net/mingw.html#install
Если открыть консоль через open_distro_window.bat, то все работает.
Но как избавиться от этих батников пока не пойму.
-
А скачать нормальный виндовый компилятор? :) То бишь студию экспресс.
Студия у меня есть. Я хочу с gcc разобраться и прикрутить его к ST2 :)
-
Винда, если что - Win7 домашний бейсик 64 бита
У меня Win7 максимальная 64 бита
-
Нашел винду. Поставил. Проверил. Все работает отлично.
Винда, если что - Win7 домашний бейсик 64 бита
Какой дистрибутив? Как ставил?
Я покурил это:
http://nuwen.net/mingw.html#install
Если открыть консоль через open_distro_window.bat, то все работает.
Но как избавиться от этих батников пока не пойму.
А что в том батнике?
Я ставил ровно то что по твоей ссылке.
Какой винда у меня я описал.
-
Уже снес эту сборку. Качаю официальный дистрибутив:
http://sourceforge.net/projects/mingw/files/MinGW/
-
Уже снес эту сборку. Качаю официальный дистрибутив:
http://sourceforge.net/projects/mingw/files/MinGW/
А у меня походу прижилась. Благо там еще и буст искаропки.
-
Все, мое терпение кончилось:
http://www.picshare.ru/view/509690/
В п...ду этот gcc.... >:(
-
Все, мое терпение кончилось:
http://www.picshare.ru/view/509690/
В п...ду этот gcc.... >:(
Не сумел побороть винду? :-)
По моему, тебе проще всего было бы разобраться чем отличаются те батники от того что сделал ты. Ты в фаре ведь в пути mingw/bin вставлял? Ну, то есть: SET PATH=%PATH%;C:\MinGw\bin говорил?
-
Ну да...
И плюс еще это добавил:
c:\MinGW\libexec\gcc\i686-pc-mingw32\4.7.2\
-
Ну да...
И плюс еще это добавил:
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++>
-
Батники вообще загадочные:
@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
@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
-
Собственно вот полный лог работы (без фара, просто в cmd.exe)
У меня так работает, но только если открыть консоль через open_distro_window.bat.
Просто cmd.exe не прокатывает...
-
Да, нюанс - я качал вот это:
mingw-9.4-without-git.exe (19.4 MB) : This is smaller, if you've already installed git.
-
Я тоже это качал.
И кстати у меня например --version показывает. Т.е. g++.exe доступен. Вот только компиляция не проходит
-
Я тоже это качал.
И кстати у меня например --version показывает. Т.е. g++.exe доступен. Вот только компиляция не проходит
А ты пробовал просто говорить g++ main.cpp, без указания полного пути и находяcь в нужном каталоге?
-
Погоди ка... а так сработало:
C:\Projects\c++>set path=%path%;c:\mingw\bin
Я это делал через интерфейс...
-
Погоди ка... а так сработало:
C:\Projects\c++>set path=%path%;c:\mingw\bin
Я это делал через интерфейс...
Какой такой интерфейс? Ручками PATH засеттить всегда надежнее :-) Этой гуйни в виндах слишком много, я в ней теряюсь. Она всегда лжет!
-
Ну я вот так делал:
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
-
Ну я вот так делал:
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?
-
Вот забавный лог:
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
И все нормально скомпилилось...
-
Ну я вот так делал:
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
-
Точно! Заработало. Большое спасибо.
Блин я и не подозревал что пробел может быть помехой. Тупая венда...
-
И в ST2 все работает автоматом. Ничего даже не настраивал. :)
-
И в ST2 все работает автоматом. Ничего даже не настраивал. :)
А я межтем поставил Qt Creator без Qt и оно mingw этот подхватило автоматом. C++11 оно знает. Так что теперь можно там невозбранно и с удобством всякое писеть. Правда надо проверить что там с отладчиком и донастроить в случае чего.
Да, новичков и оберонщиком теперь можно пугать следующими конструкциями:
[](){}();
-
Тут никто не предлагал Dev-C++. А зря. И колдовать не требуется.
-
Тут никто не предлагал Dev-C++. А зря. И колдовать не требуется.
Мне не подходит - мне нужна поддержка линукса, мака и винды (в таком порядке).
Кроме того, не факт что там не пришлось бы колдовать для корректной установки именно самого MinGW.
PS. А оно уже поддерживает C++11? Qt Creator поддерживает, но не всегда идеально.
-
Qt Creator платный?
-
Нашел:
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
-
Qt Creator платный?
Свободный. То есть доступны исходники под свободной лицензией (LGPL). Также есть официальные бесплатные бинарные сборки под несколько платформ, в том числе под винду.
Тащемто вот: http://qt-project.org/downloads#qt-creator
-
valexey, подскажи плиз как это под виндой скомпилить:
http://ittner.github.com/lua-iconv/
Там makefile видимо нужно подправить, но у меня ума не хватает :)
-
valexey, подскажи плиз как это под виндой скомпилить:
http://ittner.github.com/lua-iconv/
Там makefile видимо нужно подправить, но у меня ума не хватает :)
Сборка под виндами юниксовых тулзень то еще развлечение :-)
Доберусь до винды - попробую потыркать.
-
Сборка под виндами юниксовых тулзень то еще развлечение :-)
Да, пытался я как-то раз Mono под виндой компильнуть. Ниасилил...
-
Я использую вот эту сборку. http://code.google.com/p/mingw-builds/downloads/list
"mingw\bin\gcc.exe" main.c
На windows xp библиотек не просит.
-
#include <windows.h>
int main(){
HWND hWnd=GetConsoleWindow();
return 0;
}
error: 'GetConsoleWindow' was not declared in this scope
valexey, подскажи плиз чего ентот MinGW от меня хочет? В VS2012 компилируется без проблем
-
Надо указать версию Windows, например:
#define _WIN32_WINNT 0x0501 //Windows XP
#include <windows.h>
-
Спасибо. А где про эти особенности почитать можно? И почему в VS12 этого не требуется?
-
Например здесь (http://msdn.microsoft.com/en-us/library/windows/desktop/aa383745%28v=vs.85%29.aspx). MS VS видимо знает, под каким Windows'ом она работает.
-
И еще, товарищи, посоветуйте плиз справочник по библиотекам cpp. Нифига не понимаю как во всех этих заголовочных файлах ориентироваться. :(
-
Если по стандартным - то
1. Стандарт С++ - Бог в помощь... :)
2. Стандарт С - то же самое.
3. MSDN - смотреть helper'ы - там состав указан
Если по виндовым - только MSDN
-
Например здесь (http://msdn.microsoft.com/en-us/library/windows/desktop/aa383745%28v=vs.85%29.aspx). MS VS видимо знает, под каким Windows'ом она работает.
Спасибо. А кроме MSDN есть учебник какой-нибудь? Типа "Особенности программирования на cpp под Windows"? :)
Просто на MSDN нужно знать что искать, а я пока совсем чайник.... да и сообщения компилятора мало о чем говорят.
И еще вопрос вдогонку: Как в cpp ориентироваться без мануалов?
-
А что вам на WinApi написать понабилось? Этот API уже морально устарел Microsoft его уже почти не обновляет и потихоньку от него пытается отказаться. Есть C#, Qt и другие современные платформы.
-
Я просто пытаюсь понять азы кодинга на cpp.
На додиезе у меня таких проблем не возникало. Там все логично и понятно :) А вот с cpp чувствую себя неуютно...
-
Спасибо. А кроме 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 страниц. Но чтобы въехать в предмет - хватает.
-
И еще, товарищи, посоветуйте плиз справочник по библиотекам cpp. Нифига не понимаю как во всех этих заголовочных файлах ориентироваться. :(
Справочник: http://en.cppreference.com/
Всяко лучше чем MSDN
-
А что вам на WinApi написать понабилось? Этот API уже морально устарел Microsoft его уже почти не обновляет и потихоньку от него пытается отказаться. Есть C#, Qt и другие современные платформы.
Развивают и нет, не устарел. Одно время MS действительно пыталась прикопать WinAPI в пользу .net и c#, сейчас курс обратный.
-
И еще, товарищи, посоветуйте плиз справочник по библиотекам cpp. Нифига не понимаю как во всех этих заголовочных файлах ориентироваться. :(
Справочник: http://en.cppreference.com/
Всяко лучше чем MSDN
То что надо! Спасибо, valexey.
-
У Липпмана есть книжка для начинающих - это очень неплохой учебник: http://www.ozon.ru/context/detail/id/2988768/
А есть книжка для продолжающих: Основы программирования на С++. Я про нее писал рецензию на РСДН - там обложку можно посмотреть. Это из серии C++ in-depth. Книжка 2002 года, всего 256 страниц. Но чтобы въехать в предмет - хватает.
Спасибо, Валерий. Остановлюсь пока на Липпмане. :)
-
И еще, товарищи, посоветуйте плиз справочник по библиотекам cpp. Нифига не понимаю как во всех этих заголовочных файлах ориентироваться. :(
Справочник: http://en.cppreference.com/
Всяко лучше чем MSDN
Это точно, спасибо.
-
Люди, подскажите как в MinGW сделать proxy для dll.
ps Для MS SDK нашел: http://www.freelists.org/post/luajit/The-dreaded-newbie-questions,10
-
Человеки, подскажите как в 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И все отлично.
-
Я так понял, что gcc по дефолту все экспортирует, а msvc наоборот. И для последнего нужно создавать def-файл со списком экспортируемых символов.
Можно ли сгенерить этот def-файл автоматически?
-
Эм, а директивы экспорта конкретных процедур в коде используются (__declspec(dllexport))? Или нужно абсолютно всё экспортировать?
Для того, чтобы выходные имена получались без искажения (name mangling), то использование DEF-файла — единственный способ.
-
Товарищи, еще вопрос:
Ключ /MD при компиляции стоит использовать?
-
Эм, а директивы экспорта конкретных процедур в коде используются (__declspec(dllexport))? Или нужно абсолютно всё экспортировать?
Да. Нужно все.
Для того, чтобы выходные имена получались без искажения (name mangling), то использование DEF-файла — единственный способ.
Пичаль. Ну я тут уже нашел утилиту: http://purefractalsolutions.com/show.php?a=utils/expdef
Помогло.
-
Эм, а директивы экспорта конкретных процедур в коде используются (__declspec(dllexport))?
Нет
-
Товарищи, еще вопрос:
Ключ /MD при компиляции стоит использовать?
Или как сделать чтобы зависимость была от MSVCRT.dll, а не от MSVCR110.dll.
Или это все фобии? O_o
-
Для того, чтобы выходные имена получались без искажения (name mangling), то использование DEF-файла — единственный способ.
В Си нет манглинга имен, соответственно и проблем нет. А что такое def-файл я не знаю :-)
-
mangle — портить, искажать ;)
DEF-файл содержит перечень экспортируемых идентификаторов в виде: "внешнее имя = внутреннее имя".
-
В Си нет манглинга имен, соответственно и проблем нет. А что такое def-файл я не знаю :-)
Оно все равно туда подчеркивание добавляет... Я помню именно поэтому заморачивался с .def файлами. Но это актуально только если потому грузить надо ручками и динамически по имени (и не хочется иметь подчеркивание).
-
mangle — портить, искажать ;)
DEF-файл содержит перечень экспортируемых идентификаторов в виде: "внешнее имя = внутреннее имя".
Гм. Я правильно понимаю, что это какая-то особенность мелкомягкого компилятора? Потому как в других компиляторах я ничего подобного вроде бы не встречал.
-
mangle — портить, искажать ;)
DEF-файл содержит перечень экспортируемых идентификаторов в виде: "внешнее имя = внутреннее имя".
Я знаю как переводится слово mangle. Так вот, в Си функции экспортируются с именами as is. И это понятно почему.
А С++ язык более богатый, там для того чтобы вызвать функцию неплохо бы знать еще и типы аргументов (функция foo(int) и foo(double) - это две РАЗНЫЕ функции в С++, а в Си foo можно вызвать с любым аргументом и функция может быть только одна с именем foo), поэтому в имя функции вводят еще и типы аргументов (просто потому, что эту инфу больше положить там не куда).
Ровно та же песня, скажем в Аде.
-
Как уменьшить размер 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;
}
-
И ещё вопрос. Как избавиться при компиляции от dll в папке проекта. Без dll, g++ ругается, что их нет, хотя в папке mingw они есть.
Вот как это выглядит сейчас.
(http://i46.fastpic.ru/thumb/2013/0512/56/564dc05fe9b85fb8c073329b3a783356.jpeg) (http://fastpic.ru/view/46/2013/0512/564dc05fe9b85fb8c073329b3a783356.png.html)
-
Как уменьшить размер exe?
Для начала можете попробовать натравить strip на объектные файлы, которые получились у Вас в результате трансляции. Если в MinGW есть маны, то обращайтесь за справкой в man strip. Затем, результирующие объектники можете скомпоновать в исполнимый файл.
P.S. Я давно уже с сями баловался, поэтому мог немного ошибиться.
-
И ещё вопрос. Как избавиться при компиляции от 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...
-
Как уменьшить размер exe?
Компилю так "e:\MinGW\bin\g++" -Wall -static -s -O2 main.cpp
весит 600 кб. Если убрать -static требует какие то левые dll.
Всякую отладочную информацию из exe-файла можно убрать программой strip из комплекта утилит gcc, если размер всё ещё велик -- то затем обработать программой NSPACK (http://nspack.apponic.com/), например...
-
опция -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, но библиотека подключена.
В чём может быть проблема?
-
Может и правда mingw криво встал.
-
А какой дистрибутив и как ставили?
-
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.
-
windows xp sp3, mingw ставил веб установщиком версия mingw-get-inst-20120426.exe
Указал папку куда ставить и что нужно скачать с и с++ компилятор.
Сейчас переставлю mingw.
-
А в PATH у вас путь появился для MinGW?
-
в path должны быть установлены пути к include, bin, lib директориям мингв.. если конечно вы не используете самопальный make-файл или ворох опций в командной строке
-
А в 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
-
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 не то, он платный, да и смысл использовать его когда есть бесплатный аналог.
-
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 не то, он платный, да и смысл использовать его когда есть бесплатный аналог.
он бесплатный (если ставится отдельно от студии)
-
Сейчас я готов ставить хоть MSVC главное, чтоб заработало.
-
поставьте wxdev-c++ - при инсталяции уберите галочку с установки виджетов.. и будет у вас искоропки русифицированная настроенная ide c mingw
под консоль либо винапи
-
Jordan, посмотрите начало ветки.
echo %path%
-
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
под консоль либо винапи
Уже качаю.
-
Добавьте "что там у вас"/MinGW/bin в PATH и будет вам щастье
-
Добавьте "что там у вас"/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
Для продолжения нажмите любую клавишу . . .
-
Уже качаю.
после установки
1. Запустите Иде (выбрав русский язык для интерфейса)
2. Создайте консольный проект С++ в отдельной папке
3. Скомпилируйте запустите... - посмотрите что создается в папке проекта.. структуру маке файла
если все работает...
то в меню Сервис - параметры компилятора..
4. на вкладке опций компилятора - можете поиграться со своими опциями
5. на вкладке каталоги (вкладка библиотеки) добавьте путь к библиотечным файлам SDL - если они есть
на вкладке включаемые файлы (С,С++) - добавьте путь к директории содержащей заголовочные файлы SDL
6. если SDL требует дополнительных опций компилятора то см. п.4. и документацию SDL
-
... да забыл - название файла проекта ДОЛЖНО БЫТЬ написано латиницей.
Ну и напоследок прежде чем приступить освоению ( установке) sdl - решите несколько простых консольных задач (для того, чтобы приобрести хотя бы первичные навыки работы со средой).
-
Как уменьшить размер exe?
Плюсовая iostream - жирная. Можешь попробовать старые сишные printf, puts и т.д.
Можешь попробовать родной виндовый MSVC - оно есть бесплатное (express edition). Не знаю насколько сильно обрезанное, но точно не фатально (IDE с отладчиком должны быть).