|| Home || IT Security || Smart cards || Resources || Links || switch_to_cz

Vyvoj programu C++ v kombinaci Visual Studio 2005 a Unix (aisa)

Posledni aktualizace: 5.10.2009



Nejprve spustime Visual Studio a vytvorime novy projekt.



Zvolime moznost Win32 console application, pojmenujeme projekt (zde cv4), pro ten se vytvori automaticky novy adresar, vybereme korenovou cestu k projektu (zde D:\Documents\Develop\PB161). Vysledny projekt bude v adresari D:\Documents\Develop\PB161\cv4.



Pokracuje do detailnejsich nastaveni tlacitkem 'Next'.



Ponechame typ aplikace 'Console application', odstranime 'Precompiled header' (pro pouziti ve vetsich projektech je to jinak velmi vhodna moznost - umoznuje knihovny a struktury pouzivane v kodu prekladat pouze jednou, prestoze jsou vkladany (include) na vice mistech v kodu. Casto pouzivane knihovny/struktury je pak nutne umistit od souboru stdafx.h resp. stadafx.cpp. Doba prekladu projektu se tak vyrazne zkrati). Projekt vytvorime pomoci tlacitka 'Finish'



Ziskavame zakladni soubory projektu. V leve casti (Solution Explorer) vidime soubory cv4.cpp (to je soubor, ktery nas v tuto chvili jako jediny zajima) a dale soubory stdafx.h a stdafx.cpp (tyto soubory obsahuji typicky knihovny/struktury vyuzivane v kodu, ktere chceme mit moznost preklad pouze jednou - viz 'Precompiled header' vyse. Pomoci dvojkliku si otevreme vybrany soubor.



Upravime predgenerovany kod na kod, ktery lze pozdeji prekladat na aise. Predgenerovany kod obsahuje moznost prekladat projekt v modu Ascii nebo Unicode (default volba). V pripade ASCII ma znak (char) retezce delku jeden bajt, v pripade Unicode ma jeden znak (char) retezce delku 2 bajty (UTF-16). Visual Studio vyuziva makra TCHAR, ktere je podle zvoleneho typu prekladu zmeneno na 'char' nebo 'wchar'. Opravime '_tmain na main, _TCHAR* na char*' a odstranime vkladani hlavickoveho souboru 'stdafx.h' (#include "stdafx.h") a naopak pridame hlavickovy soubor pro funkce pracujici se vstupem a vystupem (<stdio.h> nebo <iostream>).



V nastaveni projektu (Alt+F7) v zalozce Configuration properties ->General zmenime Character set z 'use Unicode Character Set' (Unicode) na 'Not Set' (ASCII).







Nyni jsme pripraveni pro prvni preklad projektu. Preklad se provadi v nabidce 'Build'. Pomoci Build Solution prelozime vse obsazeno v aktualnim 'Solution' - to muze obsahovat vice projektu. Konkretni projekt projekt prelozime (F7, ale prirazena hodnota klavesove zkratky se muze menit - naucte/nastavte si tu, ktera vam nejvice vyhovuje). Soubory, ktere jsou jiz prelozeny a nebyly meneny se znovu neprekladaji. Pokud chcete vynutit preklad vsech souboru, pouzijte 'Rebuild Solution' resp. 'Rebuild Project'. V nasem pripade obsahuje 'Solution' pouze jediny projekt a tyto moznosti splyvaji. Obecne staci pouzivat preklad jednotliveho projektu (F7).



Vysledek prekladu mame v okne 'Output'. Probehne kompilace jednotlivych souboru (vypis jmen cv4.cpp) a linkovani. Projekt se neprelozi, pokud dojde behem prekladu k chybe (error). Preklad se provede, pokud jsou vypsany nejake varovani (warning), ale je dobre zamyslet se nad jejich vyznamem. Preklad by mel skoncit vypisem ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== nebo v pripade, ze prekladame nezmeneny, jiz prelozeny projekt(y)========== Build: 0 succeeded, 0 failed, 1 up-to-date, 0 skipped ========== .
Pokud se pri prekladu vyskytnou chyby, je nutne je opravit. V teto chvili muzeme zacit implementovat zadany ukol a provadet jeho ladeni. Vzhledem k potrebe nakonec program prelozit a odevzdat na aise je dobre cas od casu (po implementaci nove funkce apod.) vyzkouset preklad na aise. Postupne zkouseni nam umozni drive detekovat problem mezi prekladaci ve Visual Studiu a g++ na aise (ne vse co lze prelozit ve Visual Studiu lze prelozit na aise pomoci g++ a naopak. Zakladni seznam problematickych konstrukci najdete zde). Predevsim je nutne se vyhnout pouziti proprietarnich funkci pro OS MS Windows).



Predpokladejme, ze nyni mame funkcni kod ve Visual Studiu a potrebujeme jej prenest a zkompilovat na aise. Pro preneseni vyuzijeme freeware program WinSCP ("http://www.winscp.org"). Nejprve vytvorime novou seanci na aisu a ulozime si ji pomoci tlacitka 'Save'.



Zadame heslo na aisu.



Leve okno obsahuje pohled na nas lokalni soubory system, prave okno souborovy system na aise. Vytvorime si vhodne pojemnovany adresar (klav. zkratka F7) pro programy (zde PB161\cv4). V tomto adresari vytvorime soubor (Shift+F4) pro nas program (zde cv4.cc).





Do otevreneho okna s obsahem souboru cv4.cc zkopirujeme kod naseho programu (uzitecne klav. zkratky jsou Ctrl+A - vyber celeho kodu, Ctrl+C - kopirovani do schranky, Ctrl+V - vlozeni ze schranky). Obsah souboru cv4.cc ulozime pomoci Ctrl+S.



Pri prvnim ukladani se WinSCP dotaze znovu na heslo na aisu. Nyni mame soubor prenesen a muzeme pristoupit ke kompilaci na aise. Okno s obsahem souboru cv4.cc je vhodne nechat otevrene a pripadne zmeny ve Visual Studiu do nej (jako celu kod souboru cv4.cpp) kopirovat.



Pro preklad je nutne se prihlasit na aisu, napriklad pomoci freeware programu Putty (http://www.chiark.greenend.org.uk/~sgtatham/putty/). Nejprve vytvorime novou seanci na aisu, ulozime pomoci tlacitka 'Save' a otevreme spojeni pomoci tlacitka 'Open'. Vyplnime prihlasovaci jmeno a heslo na aisu.



Pro preklad se nejprve prepneme do adresare PB161 (prikazy 'cd') a overime si, ze adresar obsahuje soubor cv4.cc (prikaz 'ls'). Pridame si balik obsahujici g++ (prikaz 'module add devel') a spustime kompilaci (prikaz 'g++ -ansi -Wall -o cv4 cv4.cc'). Vysledkem je prelozeny spustitelny soubor cv4, ktery spoustime pomoci prikazu './cv4'.



Nyni pristoupime k modifikaci kodu ve Visual Studiu a prubeznemu testovani funkcnosti na aise. Modifikujeme kod tak, aby umoznoval pouzit vstupni a vystupni proudy (cin, cout, hlavickovy soubor <iostream>, using namespace std;).



Pomoci postupu popsaneho v predchozich krocich preneseme novy kod na aisu (kopie kodu do okna WinSCP souboru cv4.cc a ulozeni pomoci Ctrl+S). Prelozime soubor cv4.cc. Po spusteni './cv4' by melo dojit k vypsani naseho vystupu.



Pokud slo vse dobre, mel by prelozeny program ve Visual Studiu a pomoci g++ na aise fungovat stejne. Pokud to tak funguje, tak vyborne! Pokud ne, mozna byste uvitali pridani/upresneni nekterych kroku - napiste mi prosim.

Pokud narazite na jakykoli relevantni problem, budu vam vdecen za jeho popis (kontakt je na konci stranky). Diky!



contact
OpenPGP key : 0x89CEB31C