Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

компиляция на g++ (параметры)

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> компиляция на g++ (параметры)
Имя
Сообщение << Старые топики   Новые топики >>
компиляция на g++ (параметры) - 2007-10-11 16:02:21.816666   
dj0nik

Сообщений: 103
Оценки: 0
Присоединился: 2007-06-21 17:48:32.633333
вообщем есть например код с WinAPI:

#include &lt;windows.h&gt; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MessageBox(NULL, "Hello Win32 world!", "Hello from message box", MB_OK); return 0; }
компилирую при помощи g++ но после компиляции и запуска сзади месэджбокса появляется окно консоли(доса), какие параметры нужны что бы этого избежать?

и вообще кто какие параметры занет для g++? заранее благодарен!
Post #: 1
RE: компиляция на g++ (параметры) - 2007-10-11 16:33:07.516666   
Inspektor

Сообщений: 143
Оценки: 0
Присоединился: 2007-08-31 11:37:20.710000
Ну в студии консолей не выскакивает=) g++ ниразу не видел, но я бы такой код оптимизировал:
#pragma comment(linker,"/MERGE:.rdata=.text") #pragma comment(linker,"/ENTRY:New_WinMain")//новая точка входа #pragma comment(linker,"/NODEFAULTLIB")//не искать "инклуды" #include &lt;windows.h&gt; void WINAPI New_WinMain(void) { &nbsp;&nbsp;&nbsp; MessageBox(0,"Hello Win32 world!","Hello from message box",0); }    В итоге получаем exe'шник в 1 кб.
Post #: 2
RE: компиляция на g++ (параметры) - 2007-10-11 17:35:04.620000   
dj0nik

Сообщений: 103
Оценки: 0
Присоединился: 2007-06-21 17:48:32.633333
Студия у меня на мой кодес вообще ругается: Error 1 error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char [19]' to 'LPCWSTR' c:\documents and settings\dj0nik\мои документы\visual studio 2008\projects\project1\winapi\winapi\winapi.cpp 5 winapi

ты какого вида проект создаал?
Post #: 3
RE: компиляция на g++ (параметры) - 2007-10-11 18:15:24.900000   
Inspektor

Сообщений: 143
Оценки: 0
Присоединился: 2007-08-31 11:37:20.710000
У меня студия 2003, по умолчанию идёт Ansi, а у тебя ошибка при вызове уникод-функции, соответственно лино укажи, что у тебя всё в ansi, либо переведи строки в уникод(вместо "Hello Win32 world!"-L"Hello Win32 world!").
Post #: 4
RE: компиляция на g++ (параметры) - 2007-10-11 19:00:00.030000   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
а всё потому что надо создавать не консольное приложение а виндовс. subsystem:windows. где-то промеж опций g++ это было. читай документацию.
Post #: 5
RE: компиляция на g++ (параметры) - 2007-10-11 19:42:48.766666   
Jasmin

Сообщений: 2320
Оценки: 0
Присоединился: 2007-05-03 23:08:53.390000
g++ на венде…. а проект не с Gtk+ часом? ;)
Post #: 6
RE: компиляция на g++ (параметры) - 2007-10-11 22:48:28.136666   
dj0nik

Сообщений: 103
Оценки: 0
Присоединился: 2007-06-21 17:48:32.633333
Я начал изучать С++ и поэтому не смогу корректно ответить на вопрос по счет Gtk+.. Пишу простое приложение в блокноте и компилю в консоли при помощи g++.. мне просто так удобно..
Post #: 7
RE: компиляция на g++ (параметры) - 2007-10-11 22:54:12.690000   
Jasmin

Сообщений: 2320
Оценки: 0
Присоединился: 2007-05-03 23:08:53.390000
А ты поизучай раз уж за g++ взялся…. Gtk - это такая библиотека оконного интерфейса, имеецца и на венде и на линуксе, перенести проект написанный с ее использованием с одной операционки на другую - как два байта переслать. .NET ф топку, во всяком случае пока под Mono не появиться пространство имен Windows.Forms. WinAPI тоже фтопку изза неразрывной связи с Пиндовсом
Post #: 8
RE: компиляция на g++ (параметры) - 2007-10-11 22:57:00.193333   
Inspektor

Сообщений: 143
Оценки: 0
Присоединился: 2007-08-31 11:37:20.710000
dj0nik, писать в блокноте имея под рукой студию просто извращение! Пиши в студии, а компилируй на чём хочешь! Хоть код читабильнее будет, да и аргументы функций не надо будет искать.
З.Ы. Я надеюсь блокнот- это notepad++??
Post #: 9
RE: компиляция на g++ (параметры) - 2007-10-13 10:16:05.563333   
dj0nik

Сообщений: 103
Оценки: 0
Присоединился: 2007-06-21 17:48:32.633333
да он самый! студию я использую для C#, а когда в блокноте, то предерживаюсь стиля программирования, так что код с коментами в полне читабельный.. Спасибо за ответы Jasmin, Inspektor! и еще где в студии можно Ansi стандарт выставить, подробнее путь к менюшке, и где в этой же студии иконки для экзешного файла проекта выставлять.. Заранее благодарен..
Post #: 10
RE: компиляция на g++ (параметры) - 2007-10-13 14:37:42.300000   
Inspektor

Сообщений: 143
Оценки: 0
Присоединился: 2007-08-31 11:37:20.710000
dj0nik, мне кажется, что нет смысла перехдить с уникода на анси. Уникод довльно быстро становится(если ещё не стал) стандартом. А инфу про уникод найти не трудно, я читал про него только у Рихтера и мне хватает(там ровно одна глава посвещана уникоду).
    По поводу иконки… Тут всё очень просто, берёшь нужную иконку и добавляешь её в проект как ресурс, а затем при объявлении основного класса окна выставляешь их:
WNDCLASSEX wndclass; wndclass.hIcon=LoadIcon("Хендл иконки","Её идентификатор");
Post #: 11
RE: компиляция на g++ (параметры) - 2007-10-13 16:30:16.556666   
dj0nik

Сообщений: 103
Оценки: 0
Присоединился: 2007-06-21 17:48:32.633333
ок, спасибо за инфу!!!
Post #: 12
RE: компиляция на g++ (параметры) - 2011-08-12 15:47:17.896666   
Demsi

Сообщений: 2
Оценки: 0
Присоединился: 2011-08-12 15:23:23.396666
quote:

ORIGINAL: dj0nik

вообщем есть например код с WinAPI:

#include &lt;windows.h&gt; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MessageBox(NULL, "Hello Win32 world!", "Hello from message box", MB_OK); return 0; }
компилирую при помощи g++ но после компиляции и запуска сзади месэджбокса появляется окно консоли(доса), какие параметры нужны что бы этого избежать?

и вообще кто какие параметры занет для g++? заранее благодарен!

Была такая же проблема.

Я не знаю почему так происходит, ведь в каталоге С:\MinGW\lib есть файл libuser32.a, по сути когда пишем
g++ -o D:\Primer.exe D:\Primer.cpp
функция MessageBox вызывается из libuser32.a, но при запуске exe появляется окно доса хотя его не должно быть.

Решение:
качаем User32.lib например отсюда http://d_epositfiles.com/files/cu9skpkpc либо по гугли там быстро найдешь,
кидаем исходник и либу в один каталог, в данном случае в D:\

g++ -o D:\Primer.exe D:\Primer.cpp -mwindows D:\User32.lib
Primer.exe будет запускаться без окна Доса.
User32.lib содержит функцию MessageBox. Таким образом линковщику указывается нужная библиотека напрямую.
также в каталоге C:\Windows\system32 в моем случае или же в общем %windir%\system32 должен лежать user32.dll
скачать можно здесь http://d_epositfiles.com/files/e573albx5 но скорее всего он там будет так как идет в стандартной поставке windows.
Post #: 13
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> компиляция на g++ (параметры)







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.