Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: EXEn teko omalla koodilla

Sivun loppuun

CoolC++ [21.03.2007 10:24:20]

#

Joo, miten mahdollisesti onnistuisi exe:n kääntö omalla koodilla C++ ohjelmassa!? Es: Jos koodaa C++:saa ja kääntää sen exe:ksi omalla kääntäjällä!?

Heikki [21.03.2007 10:56:46]

#

Toki kääntäjän voi tehdä C++:lla, homma vaan on sen verran hankalaa että en suosittele. Jos kuitenkin kieli on täydellisesti hallussa, tiedät millaista binäärikoodia suorittimelle pitää antaa ja sinulla on tajuttomasti aikaa, niin mikäs siinä...

Eli käytännössä ei ole mahdollista :)

Markus [21.03.2007 11:40:31]

#

Oman kääntäjän tekeminen vie asiaan perehtyneeltäkin vuosia. Sen sijaan voit käyttää mitä tahansa kääntäjää ohjelmasi sisältä esim. system-funktion avulla. Eli kirjoita käännettävän ohjelman koodi tiedostoon ofstream-olion avulla ja käännä syntynyt tiedosto kutsumalla kääntäjää system-funktiolla. Lopuksi voit vielä ajaa käännetyn ohjelman samalla system-funktiolla.

#include <iostream>
#include <fstream>

int main()
{
  std::ofstream file("hello.cpp");
  file << "#include <iostream>\nint main() { std::cout << \"Hello World!\\n\"; }\n";
  file.close();

  system("g++ hello.cpp -o hello");
  system("./hello");

  return 0;
}

Äskeinen esimerkki oli Linuxille. Jos käytät Windowsia varmista, että GCC-kääntäjä on asennettu ja se on PATH:ssa ja vaihda rivit:

system("g++ hello.cpp -o hello");
system("./hello");

muotoon

system("g++ hello.cpp -o hello.exe");
system("hello.exe");

Edit:

Tietenkin voit imuroida GCC-kääntäjän lähdekoodin (http://gcc.gnu.org/) ja kopioida siitä tarvittavat osat ohjelmaasi, mutta edes valmiin kääntäjän modifiointi ei ole mitään helppoa ja vie kokomattomalta sekin ainakin kuukausia.

Sweiz [27.03.2007 17:37:41]

#

Markus kirjoitti:

Jos käytät Windowsia varmista, että GCC-kääntäjä on asennettu ja se on PATH:ssa ja vaihda rivit:

system("g++ hello.cpp -o hello");
system("./hello");

muotoon

system("g++ hello.cpp -o hello.exe");
system("hello.exe");

Käytän MinGW-kääntäjää, miten sillä voi tehdä tämän?

Blaze [27.03.2007 18:31:30]

#

MinGW sisältää GCC:n.

Sweiz [27.03.2007 19:32:11]

#

Missä PATH sitten tarkalleen ottaen sijaitsee? :)

Markus kirjoitti:

Jos käytät Windowsia varmista, että GCC-kääntäjä on asennettu ja se on PATH:ssa

Lahha [28.03.2007 00:38:15]

#

Oma tietokone -> Ominaisuudet -> Lisäasetukset -> Ympäristömuuttujat -> Järjestelmämuuttujat

Sweiz [31.03.2007 20:51:18]

#

Lahha kirjoitti:

Oma tietokone -> Ominaisuudet -> Lisäasetukset -> Ympäristömuuttujat -> Järjestelmämuuttujat

Kuulostaa hankalalta, en edes löydä sitä tietokoneestani. Onko mahdollista ladata koodia ifstream:n avulla valmiiseen EXEen?

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main(void){

  ifstream tiedosto("cplusplus.txt");

  while(!tiedosto.eof()){

    // Luetaan tiedostosta koodia ohjelmaan

  }

  tiedosto.close();

  return 0;
}
***cplusplus.txt

cout << "Terve!";

Mazzimo [31.03.2007 22:24:31]

#

Ei ole mahdollista. Joudut tekemään oman tulkin "koodillesi".

Sweiz [31.03.2007 22:50:54]

#

Eli tarkoittaako se käytännössä tätä:

// luetaan koodista rivi
switch(tolower(readline))
{
  case 'koodia1':
    // tee jotain
    break;
  case 'koodia2':
    // tee muuta
    break;
}

Ohjelma vaan pyörii pirun hitaasti tällöin. :(

Markus [31.03.2007 23:33:18]

#

Kokeile kirjoittaa "g++" komentokehotteeseen. Jos gcc käynnistyy (eli tulostaa lyhyen viestin/käyttöohjeen esim "g++: no input files") on se jo valmiina PATH:issa. Jos saat ilmoituksen, että ohjelmaa ei löydy, seuraa tämän sivun
"http://www.computerhope.com/issues/ch000549.htm"
ohjeita ja lisää polku, josta ohjelma nimeltä "g++.exe" löytyy PATH:iin.

Voit kokeilla myös laittaa g++.exe:n polun suoraan käynnistyskomennon eteen, mutta se tuskin toimii kunnolla. Eli muuta
"system("g++ hello.cpp -o hello.exe");"
muotoon
"system("c:/polku_josta_g++.exe_löytyy/g++ hello.cpp -o hello.exe");"

Mazzimo [01.04.2007 10:41:49]

#

Mielestäni IDE olisi paras vaihtoehto, kerta aloittelija on selvästikin kyseessä.
Itse suosittelen Visual C++ 2005 Express + Platform SDK (http://msdn.microsoft.com/vstudio/express/visualc/).
Monet käyttävät myös Dev-C++:aa, joka ei mielestäni ole kuitenkaan kauhean hyvä (http://www.bloodshed.net/devcpp.html).

Näissä on koodin tekoon tarvittava editori, sekä kääntäjä mukana, joten EXE:jen teko onnistuu paria nappia painamalla.

tgunner [01.04.2007 11:34:45]

#

^Ei tässä puhuttu mistään, mikä liittyisi tuohon vaan haluttiin kääntää omalla ohjelmalla koodia ja tähän ehdotettiin gcc:tä. Ei Mazzimo tainnut lukea koko aihetta! >:)

Mazzimo [01.04.2007 12:44:09]

#

^Täytyy myöntää.. :P

DrDeath [30.04.2007 07:51:00]

#

Visual ja visual... Pöh, Windowsin Edit:llä ne ammattilaiset ohjelmansa koodaa...
C:>edit


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta