Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++ :n aloitus

Jaahas [06.04.2012 12:08:39]

#

Moikka!

Joskus monta vuotta sitten tuli vb.netin kanssa leikittyä ja nyt haluaisin aloittaa uusiksi C++:n kanssa. Eilen luin oppaita täältä ja latasin Visual Studio C++:n, kun vb.netin kanssa oli vain hyviä kokemuksia ko ohjelman kanssa.
No nyt tuli niitä muitakin kokemuksia: Ei onnistunut jostakin syystä asennukset -> poistin kaikki vb.net/sql/framework/c++ ja asensin uusiksi visual studio c++:n ja sql Server Edition 3.5:n (studio vaati tämän version, en tiiä oisko uudempi käynyt).

Nyt saan jo ohjelman auki tällä kokoonpanolla, mutta ainakin 2 ongelmaa vielä:

'testailua - console application.exe': Loaded 'D:\C++\testailua - console application\Debug\testailua - console application.exe', Binary was not built with debug information.
'testailua - console application.exe': Loaded 'C:\Windows\System32\ntdll.dll', Cannot find or open the PDB file
'testailua - console application.exe': Loaded 'C:\Windows\System32\mscoree.dll', Cannot find or open the PDB file
'testailua - console application.exe': Loaded 'C:\Windows\System32\kernel32.dll', Cannot find or open the PDB file
'testailua - console application.exe': Loaded 'C:\Windows\System32\msvcr100d.dll', Cannot find or open the PDB file
'testailua - console application.exe': Loaded 'C:\Windows\System32\msvcp100d.dll', Cannot find or open the PDB file
'testailua - console application.exe': Loaded 'C:\Windows\System32\apphelp.dll', Cannot find or open the PDB file
'testailua - console application.exe': Loaded 'C:\Windows\System32\advapi32.dll', Cannot find or open the PDB file
'testailua - console application.exe': Loaded 'C:\Windows\System32\rpcrt4.dll', Cannot find or open the PDB file
'testailua - console application.exe': Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscoreei.dll', Cannot find or open the PDB file
'testailua - console application.exe': Loaded 'C:\Windows\System32\shlwapi.dll', Cannot find or open the PDB file
'testailua - console application.exe': Loaded 'C:\Windows\System32\gdi32.dll', Cannot find or open the PDB file
'testailua - console application.exe': Loaded 'C:\Windows\System32\user32.dll', Cannot find or open the PDB file
'testailua - console application.exe': Loaded 'C:\Windows\System32\msvcrt.dll', Cannot find or open the PDB file
'testailua - console application.exe': Loaded 'C:\Windows\System32\imm32.dll', Cannot find or open the PDB file
'testailua - console application.exe': Loaded 'C:\Windows\System32\msctf.dll', Cannot find or open the PDB file
'testailua - console application.exe': Loaded 'C:\Windows\System32\lpk.dll', Cannot find or open the PDB file
'testailua - console application.exe': Loaded 'C:\Windows\System32\usp10.dll', Cannot find or open the PDB file
'testailua - console application.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.6002.18305_none_5cb72f2a088b0ed3\comctl32.dll', Cannot find or open the PDB file
'testailua - console application.exe': Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll', Cannot find or open the PDB file
'testailua - console application.exe': Loaded 'C:\Windows\System32\msvcr100_clr0400.dll', Cannot find or open the PDB file
'testailua - console application.exe': Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Culture.dll', Cannot find or open the PDB file
'testailua - console application.exe': Loaded 'C:\Windows\assembly\NativeImages_v4.0.30319_32\mscorlib\44ae9f9afb2373055136d57ac6db3f96\mscorlib.ni.dll', Cannot find or open the PDB file
'testailua - console application.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll'
'testailua - console application.exe': Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\nlssorting.dll', Cannot find or open the PDB file
'testailua - console application.exe': Loaded 'C:\Windows\System32\ole32.dll', Cannot find or open the PDB file
'testailua - console application.exe' (Managed (v4.0.30319)): Loaded 'D:\C++\testailua - console application\Debug\testailua - console application.exe'
'testailua - console application.exe': Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\clrjit.dll', Cannot find or open the PDB file
'testailua - console application.exe': Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\diasymreader.dll', Cannot find or open the PDB file
'testailua - console application.exe': Loaded 'C:\Windows\assembly\NativeImages_v4.0.30319_32\System\2c59490afc22def906d3ca96e1207ff9\System.ni.dll', Cannot find or open the PDB file
'testailua - console application.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll'
The thread 'Win32 Thread' (0x17a0) has exited with code 0 (0x0).
The thread 'Win32 Thread' (0x12a4) has exited with code 0 (0x0).
The program '[5676] testailua - console application.exe: Managed (v4.0.30319)' has exited with code 0 (0x0).
The program '[5676] testailua - console application.exe: Native' has exited with code 0 (0x0).

Oikeastaan aivan sama, mitä mallikoodia tuolta ohjeista koitan, aina sama litannia.

'#include "StdAfx.h"' taitaa olla aina koodissa mukana? Tätä ei ollut missään oppaassa, mutta heti tulee virheilmoitus, jos puuttuu.

Tiedän, että ohjelma sulkeutuu, kun koodista rivit loppuvat, mutta onko se normaalia, ettei ehdi edes vastausta lukemaan. Esimerkiksi osa2:sta löytyvä koodi:

int main() {
	int luku;
	std::cout << "Anna jokin kokonaisluku: " << std::endl;
	std::cin >> luku;
	std::cout << "Annoit luvun " << luku << ". Kiitos." << std::endl;
}

Sulkeutuu heti kun painan enteriä.

Ja console applicationin kanssa tappelen :)

vesikuusi [06.04.2012 12:22:47]

#

Miten olisi jos poistaisit koko kehitysympäristön ja asentaisit uudelleen? En kyllä tajua, miten SQL liittyy tähän :D (ellet sitten meinaa tulevaisuudessa tehdä tietokantaoperaatiota c++:lla...?)

Jaahas kirjoitti:

Tiedän, että ohjelma sulkeutuu, kun koodista rivit loppuvat, mutta onko se normaalia, ettei ehdi edes vastausta lukemaan.

On normaalia. Pistä sinne mainin viimeiselle riville

std::cin.get();

Se ottaa puskurista yhden enterin ja jatkaa sitten.

Grez [06.04.2012 12:31:02]

#

Tai laittaa sinne viimeiselle riville breakpointin, niin ei sitten kun sitä käyttää muuten kuin debugissa tarvitse poistaa tai kärsiä turhasta napin painelusta..

Tietty voisihan sen laittaa if #debug -tyylisellä käännösoptiollakin.

Jaahas [06.04.2012 22:33:26]

#

vesikuusi kirjoitti:

Miten olisi jos poistaisit koko kehitysympäristön ja asentaisit uudelleen? En kyllä tajua, miten SQL liittyy tähän :D (ellet sitten meinaa tulevaisuudessa tehdä tietokantaoperaatiota c++:lla...?)

Jotakin se valitti tuosta ohjelmasta, kun ei sitä ollut, eikä suostunut avaamaan ollenkaan visual studiota. Mutta se ei enään ole ongelmana, eikä se pääasia :)

Mutta nyt on jälleen tyhjennetty kaikki ja uudelleen asennettu, eikä tämä ongelma poistunut. Sama lista tulee, aivan sama mitä on kirjoitellut. Oisko jollain tietoa, että mitä nämä PDB tiedostot ovat? Tuolta kansiosta ei tosiaankaan löydy yhtään pdb tiedostoa, enkä nopealla silmäilyllä löytänyt "C++"-kansiostakaan, jonne siis kaikki tähän liittyvät tiedostot asensin. En ehtinyt tänään paljoa koittaa, muttei nuo suurena esteenä ainakaan aluksi ole, mutta parempi varmaan heti alussa vaihtaa toisen laiseen sovellukseen, jos alkaa heti takkuilemaan(?).

vesikuusi [07.04.2012 00:31:01]

#

Onko asia nyt niin, että tuo kaikki tulostuu, mutta kaikki tekemäsi ohjelmat toimii normaalisti? Koska tuohan saattaa olla ihan tavallista debug-infoa. En näistä Microsoftin Studioista kauheasti tiedä, linuxin puolella kun ohjelmani teen ja käännän.

Mutta jos kaikki muuten toimii, niin voithan kääntää ohjelmasi release-asetuksilla, niin ei sen pitäisi tulostella mitään ylimääräistä. Onko tuo kaikki info siis ohjelman itse tulostamaa vai tuleeko se johonkin Visual Studion omaan tekstikenttään? Jos näin on, niin eihän siitä tarvitse edes välittää.

Spongi [07.04.2012 04:30:24]

#

Muistaakseni Visual Studiossa ctrl+f5 (start without debugging tjsp) pyytää nappia ohjelman suljettua.

Noista ilmoituksista pdb-tiedostojen suhteen ei tarvi välittää, googlella löytää näppärästi tietoa http://msdn.microsoft.com/en-us/library/yd4f8bd1(v=vs.100).aspx

StdAfx.h on taas precompiled headereihin liittyvää touhua, ja sitä ei tarvi sisällyttää kun laitat ruksin projektia luodessas kohtaan "empty project" tms. Joudut tämän jälkeen lisäämään projektiin itse cpp-tiedoston johon naputtelet koodisi.

Jaahas [07.04.2012 21:43:24]

#

vesikuusi kirjoitti:

Onko asia nyt niin, että tuo kaikki tulostuu, mutta kaikki tekemäsi ohjelmat toimii normaalisti? Koska tuohan saattaa olla ihan tavallista debug-infoa. En näistä Microsoftin Studioista kauheasti tiedä, linuxin puolella kun ohjelmani teen ja käännän.

Mutta jos kaikki muuten toimii, niin voithan kääntää ohjelmasi release-asetuksilla, niin ei sen pitäisi tulostella mitään ylimääräistä. Onko tuo kaikki info siis ohjelman itse tulostamaa vai tuleeko se johonkin Visual Studion omaan tekstikenttään? Jos näin on, niin eihän siitä tarvitse edes välittää.

Kiitos tästä :)
Tulee siis debug-kohtaan ja nyt ainakin kun koitin niin opas sarjasta näkyy oikein kaikki koodit. Ei ollut tälläisiä vb.netin puolella (ainakaan kovinkaan näkyvästi^^), niin mielessä kävi, ettei tule tämän takia mitään ongelmia/tms.

Mutta kiitokset jokaselle! Sitten se opetteluvaihe :)

Vastaus

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

Tietoa sivustosta