Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Mali EXE u VC++ ?

[es] :: C/C++ programiranje :: Mali EXE u VC++ ?

[ Pregleda: 3714 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Predrag Damnjanovic
Predrag Damnjanovic
Nis, Srbija

Član broj: 141
Poruke: 1305
*.bankerinter.net

Sajt: www.mycity.rs


+1 Profil

icon Mali EXE u VC++ ?30.03.2002. u 11:22 - pre 246 meseci
Najmanji EXE koji sam uspeo da napravim sa VC++ 6.0 je 24kb.
Kompresovano sa UPX ispadne oko 9 kb.
Uspeo li je neko da napravi manji EXE od 24kb?
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16266
*.verat.net



+7094 Profil

icon Re: Mali EXE u VC++ ?30.03.2002. u 12:39 - pre 246 meseci
Evo, ja sam upravo napravio EXE od 16 KB koji kad se spakuje UPXom ima 2 KB

Trik je da ne koristis CRT biblioteku - mada je meni ovo u kontekstu pisanja Win32 korisnickih programa potpuno besmisleno.


MSVC moze stvarno praviti male programe, secam se da sam 1997 napravio 3D intro za DOS, koji je imao 4k, a pisan je u C-u sa inline assemblerom. Sam source fajl je bio oko 25 KB, a kad se prevede i kompresuje PKLITEom imao je 4KB. Intro je imao 3D engine (transformaciju vektora, sencenje i osvetljenje) - prostu rotaciju i blur out + pikselizaciju na kraju. Sam objekat je imao oko 150-200 trouglova, ne secam se tacno.

Naravno, intro nije koristio CRT library, cak ni startup (crt0.asm) - ali se kompajlirao sa MSVC-om, i koristio sve prednosti C-a. Floating point se nije koristio, vec je koriscena fixed point algebra zbog brzine (intro je radjen na 486 DX4 na 133 MHz)
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
Prikačeni fajlovi
 
Odgovor na temu

Predrag Damnjanovic
Predrag Damnjanovic
Nis, Srbija

Član broj: 141
Poruke: 1305
*.bankerinter.net

Sajt: www.mycity.rs


+1 Profil

icon Re: Mali EXE u VC++ ?30.03.2002. u 12:51 - pre 246 meseci
Kako se iskljucuje ta CTR biblioteka, i sta time gubim?
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16266
*.verat.net



+7094 Profil

icon Re: Mali EXE u VC++ ?30.03.2002. u 12:56 - pre 246 meseci
Pa ne koristis ANSI-C funkcije (printf, scanf, getc, itd...)

A u procesu linkovanja stavis /NODEFAULTLIBRARY

Takodje, i /ENTRY:neka_tvoja_funkcija_koja_nije_main

Gubis dosta toga, sve usluge CRT biblioteke viseg nivoa (operacije sa stringovima, fajlovima, itd)

Naravno, uvek mozes pozivati Win32 ekvivalente (u mom primeru MessageBoxA) kojih ima sasvim dovoljno.

Prednost ovoga je sto u 20-30 KB (tj. spakovanih 10-20 KB) mozes smestiti neki OpenGL/Direct3D applet za Internet koji bi se trenutno ucitavao. Sve zavisi sta hoces da uradis.

DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

Predrag Damnjanovic
Predrag Damnjanovic
Nis, Srbija

Član broj: 141
Poruke: 1305
*.bankerinter.net

Sajt: www.mycity.rs


+1 Profil

icon Re: Mali EXE u VC++ ?30.03.2002. u 13:13 - pre 246 meseci
A aplikacija ne mora da bude konzolna?
 
Odgovor na temu

Predrag Damnjanovic
Predrag Damnjanovic
Nis, Srbija

Član broj: 141
Poruke: 1305
*.bankerinter.net

Sajt: www.mycity.rs


+1 Profil

icon Re: Mali EXE u VC++ ?30.03.2002. u 13:27 - pre 246 meseci
Kad mu iskljucim default library, javlja ovo:

Linking...
LINK : error LNK2001: unresolved external symbol _WinMainCRTStartup
Release/go1.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

Nisi mi rek'o kako da iskljucim taj CRT?
Inace, pokusavam da iskompajliram ne-konzolnu aplikaciju.
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16266
*.verat.net



+7094 Profil

icon Re: Mali EXE u VC++ ?30.03.2002. u 13:53 - pre 246 meseci
Ne mora da bude konzolna aplikacija

cl moj_mali_program.c /c

link /NOD /ENTRY:moj_entry_poing /SUBSYSTEM:WINDOWS user32.lib gdi32.lib kernel32.lib


/SUBSYSTEM:[CONSOLE | WINDOWS | NATIVE | POSIX]


DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

Predrag Damnjanovic
Predrag Damnjanovic
Nis, Srbija

Član broj: 141
Poruke: 1305
*.bankerinter.net

Sajt: www.mycity.rs


+1 Profil

icon Re: Mali EXE u VC++ ?30.03.2002. u 15:21 - pre 246 meseci
Hvala, radi!
Mada me posteno namuci sa /entry, trebalo mi 15 minuta da ukapiram da trebam da stavim main
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
..ndg-pm4-1.dialup.nethere.net



+6 Profil

icon Re: Mali EXE u VC++ ?30.03.2002. u 16:48 - pre 246 meseci
Citat:
Ivan Dimkovic:

Gubis dosta toga, sve usluge CRT biblioteke viseg nivoa (operacije sa stringovima, fajlovima, itd)

Naravno, uvek mozes pozivati Win32 ekvivalente (u mom primeru MessageBoxA) kojih ima sasvim dovoljno.

Prednost ovoga je sto u 20-30 KB (tj. spakovanih 10-20 KB) mozes smestiti neki OpenGL/Direct3D applet za Internet koji bi se trenutno ucitavao. Sve zavisi sta hoces da uradis.


CRT je neophodan ako hoćeš da praviš portabilne programe (ISO C/C++). A ako si već rešio da se vežeš za Win, može sasvim lepo i bez njega. ATL projekti po default-u izbace CRT.

A nije loša ideja ni da se program dinamički linkuje sa CRT-om. Tada možeš da koristiš sve standardne funkcije i opet dobiješ "mali" exe.
 
Odgovor na temu

Milan Aksic

Član broj: 412
Poruke: 1053
*.ptt.yu



Profil

icon Re: Mali EXE u VC++ ?30.03.2002. u 17:34 - pre 246 meseci
D.T. kako bi moglo da se izvede da se program dinamicki linkuje sa CRT-om ?
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16266
*.verat.net



+7094 Profil

icon Re: Mali EXE u VC++ ?30.03.2002. u 17:39 - pre 246 meseci
Koristis MSVCRT.lib

tj. -MD switch (cl.exe)

ili odgovarajucu opciju u "Project Options" u MSVC++

DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

Predrag Damnjanovic
Predrag Damnjanovic
Nis, Srbija

Član broj: 141
Poruke: 1305
*.bankerinter.net

Sajt: www.mycity.rs


+1 Profil

icon Re: Mali EXE u VC++ ?30.03.2002. u 23:14 - pre 246 meseci
Evo sta je stalo u 3kb
Prikačeni fajlovi
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16266
*.verat.net



+7094 Profil

icon Re: Mali EXE u VC++ ?04.04.2002. u 14:04 - pre 246 meseci
Baci pogled na 4k introe da vidis sta sve stane u 4 KB... :)

DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

[es] :: C/C++ programiranje :: Mali EXE u VC++ ?

[ Pregleda: 3714 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.