visual c++ express

olen kääntänyt vc expressillä pari ohjelmaa win32 exeksi (ei .net) ja ne toimis kun vc oli asennettu. kun laitoin windowsin uudelleen, exet ei toimi vaan valittaa että sovelluksen kokoonpano on viallinen (eli varmaan joitain dlliä puuttuu).

exe on tekstipohjainen, yksinkertainen ohjelma.

voiko vc lla tehdä sitten ohjelmia jotka toimii myös koneissa joissa kääntäjää eikä platform sdk:ta ole asennettu? vai mitä tuo vaatii?

pistin jo msvcp80.dll ja msvcr80.dll system32 hakemistoon, ei auttanut.

asetin sen kääntämään win32 ohjelmia näillä ohjeilla: http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/

xp sp2.
113452
Äänestä

Muut lukivat myös

Vastaukset 11

Vanhimmat

Lataile depends.exe:
http://www.dependencywalker.com/
ja katsele mitä kirjastoja ohjelma käyttää. Jos jotain dll ei löydy, ohjelma näyttää kirjaston punaisena.
Itse kun oon käännelly visual studiolla, en oo käytelly noita ms*.dll -kirjastoja enkä sulauttanut ohjelmankaan sisään. Paljon pienempiä ohjelmia tulee käyttämällä api -funktioita, ja ne dll:t löytyvätkin jokaisesta wintoosasta.

Äänestä
  • hei, tuo onkin kätsy softa. kiitti tiedosta. olinki sählänny jotain ite, nyt kun asensin .net2 niin ohjelmat toimii. olenkin varmaan kääntänyt ne väärin.

    Äänestä

semmoinen täppäkohta, missä lukee suunnilleen siten, että "static linking", laita siihen kohtaan täppä, mutta jossulla on toinen sensijaan täppäkohta, jossa sanotaan kutakuinkin siten, että "dynamic linking", ota siitä kohtaa täppä pois ja linkitä se projektis uudestaan.

Äänestä
  • Ite käytän semmosta asetusta et Hello World -ohjelma tulee ulos 768 tavuisena. Siitä ainaki tietää onks asetukset kunnossa :o

    Äänestä

  • test kirjoitti:

    Ite käytän semmosta asetusta et Hello World -ohjelma tulee ulos 768 tavuisena. Siitä ainaki tietää onks asetukset kunnossa :o

    ookaan, mutta tutustu staattisen ja dynaamisen eli vissiinkinsä käännösaikaisen ja ajonaikaisen linkittämisen eroihin ja plussiin ja miinuksiin: ne menevät kääntäjästä riippumatta aina samalla rutiinilla eli on kuin polkupyöräily, jonka yhdellä fillarilla opittuaan osaa kaikilla.

    Äänestä

  • Multimeedio kirjoitti:

    ookaan, mutta tutustu staattisen ja dynaamisen eli vissiinkinsä käännösaikaisen ja ajonaikaisen linkittämisen eroihin ja plussiin ja miinuksiin: ne menevät kääntäjästä riippumatta aina samalla rutiinilla eli on kuin polkupyöräily, jonka yhdellä fillarilla opittuaan osaa kaikilla.

    Pienenä erona on vaan se ettei windows apeista oo sellaisia lib -tiedostoja et staattinen linkitys onnistuis. Mut jos ohjelma käyttäis C:n kirjastofunktioita, asetus tietysti merkkais.
    Useimmissa C -kääntäjissä ohjelmat vaan tahtovat paisua vaik ohjelman toiminta ois vain pientä ku käytetään C:n (tai varsinkin C :n) kirjastofunktioita - ihan sama käytettiin dynaamista tai staattista linkitystä.

    Äänestä

  • test kirjoitti:

    Pienenä erona on vaan se ettei windows apeista oo sellaisia lib -tiedostoja et staattinen linkitys onnistuis. Mut jos ohjelma käyttäis C:n kirjastofunktioita, asetus tietysti merkkais.
    Useimmissa C -kääntäjissä ohjelmat vaan tahtovat paisua vaik ohjelman toiminta ois vain pientä ku käytetään C:n (tai varsinkin C :n) kirjastofunktioita - ihan sama käytettiin dynaamista tai staattista linkitystä.

    sun upee ohjelmas ei yhtään toimi kaveril kun sil ei oo justiinsa samanlaista kääntäjää. Kertakaikkiaan: sähän teet van sellaisen asentelupaketin, että siinä tulee mukana kaikki kirjastot ja heti skulaa ja jää sen ohjelma koko kin niin helkkarin piäneksi, jos sitä teratavun kirjastoa ei lasketa.

    Äänestä

Solutionin / projektin asetuksiin "Use MFC in static libraries", niin johan pelaa. Niin ja käännä Release-versio, debug tarvii jos mitä dll:iä.

Perus-MFC dll:t ovat msvcrt.dll (C runtime) ja mfc42.dll (mahdollisesti uudemmat versiot, eli esim. mfc71.dll tai jotakin). Visual Studion asennusmedialla on jossakin Redist-folder, siellä kerrotaan kohdekoneella eri tilanteissa tarvittavat DLL:t.

Äänestä
  • Mihin tota MFC:tä tarvitaan ? Kyseessähän oli yksinkertainen DOS -ohjelma. Suurin osa komennoista löytyy jokaisen wintoosan mukana tulevista dll:stä (kernel32,user32,gdi32). Eikä tarvii huolehtii versioista ku komennot on lähes samat jokaisessa versiossa.
    MFC:llähän kierrellään pitkän mutkan kautta samoihin wintoosan apeihin.

    Äänestä

  • test kirjoitti:

    Mihin tota MFC:tä tarvitaan ? Kyseessähän oli yksinkertainen DOS -ohjelma. Suurin osa komennoista löytyy jokaisen wintoosan mukana tulevista dll:stä (kernel32,user32,gdi32). Eikä tarvii huolehtii versioista ku komennot on lähes samat jokaisessa versiossa.
    MFC:llähän kierrellään pitkän mutkan kautta samoihin wintoosan apeihin.

    No jos olet tuota mieltä, niin älä käytä MFC-luokkia. Ei sitten tarvita niitä dll:iäkään (paitsi että msvcrt on microsoft visual c runtime library, eli se taidetaan tarvita).

    Minusta MFC-luokat helpottavat kyllä koodausta, mutta jos haluat tehdä kaiken aina itse alusta alkaen, niin siitä vaan. Esimerkkinä nyt merkkijonon käsittely, tiedostokäsittely, ajan käsittely, jne. Kaikki onnistuu raaalla c:llä / c :lla, mutta koodaus on vain vähän itkuisempaa.

    Äänestä

  • Koodin Vääntäjä kirjoitti:

    No jos olet tuota mieltä, niin älä käytä MFC-luokkia. Ei sitten tarvita niitä dll:iäkään (paitsi että msvcrt on microsoft visual c runtime library, eli se taidetaan tarvita).

    Minusta MFC-luokat helpottavat kyllä koodausta, mutta jos haluat tehdä kaiken aina itse alusta alkaen, niin siitä vaan. Esimerkkinä nyt merkkijonon käsittely, tiedostokäsittely, ajan käsittely, jne. Kaikki onnistuu raaalla c:llä / c :lla, mutta koodaus on vain vähän itkuisempaa.

    MFC:llekin on kyllä käyttöä, kun esim. tehdään AutoCadin päälle lisäkilkukkeita. Sillä saa näppärästi valikoita ym. En tosin tajuu miks MFC:tä pitää tunkea joka paikkaan. Pieniki ohjelma ni heti MFC. Vähä niinku tässä:
    http://hp.vector.co.jp/authors/VA000092/jokes/strup-e.html

    Mitä vaikeuteen tulee ni valmiilla makroilla saa kirjottelun aika helpoks ja virhekohdan löytäminen on huomattavasti helpompaa. Enempi se taitaa kuitenki olla tottumiskysymys millä tavalla tykkää kirjotella.

    msvcrt ei oo pakollinen, sen pois ottaminen vaan vaatii et käyttelet niitä win apeja tietämys mikä on se todellisen aloitusfuntion nimi.
    Esim seuraava Visual C 6 ei käytä msvcrt:tä:

    #include
    char teksti[]="Hello World!";
    #ifndef _DEBUG
    void mainCRTStartup(){
    #else
    void main(){
    #endif
    void *stdh;
    unsigned written;
    stdh=GetStdHandle(-11);
    WriteFile(stdh,teksti,sizeof(teksti),&written,NULL);
    }

    Äänestä

Kommentoi aloitusta


miitää kirjoitti:

olen kääntänyt vc expressillä pari ohjelmaa win32 exeksi (ei .net) ja ne toimis kun vc oli asennettu. kun laitoin windowsin uudelleen, exet ei toimi vaan valittaa että sovelluksen kokoonpano on viallinen (eli varmaan joitain dlliä puuttuu).

exe on tekstipohjainen, yksinkertainen ohjelma.

voiko vc lla tehdä sitten ohjelmia jotka toimii myös koneissa joissa kääntäjää eikä platform sdk:ta ole asennettu? vai mitä tuo vaatii?

pistin jo msvcp80.dll ja msvcr80.dll system32 hakemistoon, ei auttanut.

asetin sen kääntämään win32 ohjelmia näillä ohjeilla: http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/

xp sp2.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu