kuhar
(Kubakuderski)
23 Czerwiec 2009 15:50
#1
no więc mam taki problem…
ostatnio postanowiłem znowu wrócić do programowania w c++, tylko, ze nie mogę skompilować pliku pod dev-c++, code blocks i innymi tego typu. kod jest bardzo prosty, bo tylko chciałem sprawdzić, czy zadziała, więc błędu w nim nie ma. kiedy daje w każdym z tych programów kompiluj to niby jest ok, ale po prostu nic się nie dzieje. os - win7 rc x86
na viście działa ok ;/
Fiolek
(Fiołek)
23 Czerwiec 2009 16:30
#2
Ja pod Windows 7 używam Visual C++ i zawsze mi wszystko działa. Możliwe, że masz starszą wersję GCC. Zaktualizuj. Jeśli nie pomoże to rozwiń skrót myślowy “nic się nie dzieje”.
kuhar
(Kubakuderski)
23 Czerwiec 2009 16:33
#3
hmmm… miałem na myśli, że po prostu niby odbywa się kompilowanie i wszystko ok, tzn tak mówią programy, ale potem wychodzi na to, że program nic nie zrobił i nie da się uruchomić programu…
zassałem sobie visual c++ 2008 express edition… jako iż nie mam praktycznie żadnego doświadczenia z tym programem z programowaniem w gole bardzo nikłe - jak pod tym skompilować i uruchomić program ?
d.evil
(Kacper Cybuch)
23 Czerwiec 2009 16:35
#4
A co próbujesz kompilować? Aplikację okienkową, konsolową?
kuhar
(Kubakuderski)
23 Czerwiec 2009 16:38
#5
konsolową - bo innych nie umiem… jeszcze
d.evil
(Kacper Cybuch)
23 Czerwiec 2009 16:43
#6
Pojawia się w ogóle gdzieś w katalogu z projektem plik .exe?
Jak tworzysz aplikację konsolową w VC++?
Edit: rzuć kodem źródłowym.
kuhar
(Kubakuderski)
23 Czerwiec 2009 16:51
#7
no właśnie plik *.exe się nie pojawia…
to może rzuci ktoś linkiem albo powie jak skompilować jakąś aplikację pod vc++… albo napisze tutaj…
kodu nie daje, bo na razie nie mam dysku z moimi byłymi projektami i testuje rożne środowiska programistyczne na programie typu “hello world” xD
d.evil
(Kacper Cybuch)
23 Czerwiec 2009 17:00
#8
No i właśnie o to mi chodziło - skoro nawet “hello world” się nie kompiluje, to od niego trzeba zacząć.
Jak w VC++ dajesz nowy projekt->Win32->Win32 console application (odznaczasz przy tworzeniu “precompiled header”), to dostajesz taki kod:
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
Wyrzucasz pierwszą linię (includa), a pierwszą (po wyrzuceniu includa będzie to main…) linię zmieniasz tak:
int main(int argc, char* argv[])
Oprócz tego wyrzucasz z projektu pliki: stdafx.h, targetver.h, stdafx.cpp.
Zostawiasz tylko ten jeden z kodem.
Taki plik powinien się skompilować wszędzie.
W VC++ domyślnie pojawi się w katalogu projektu\Debug.
W Dev-C++ też tworzysz aplikację konsolową i wpisujesz ten kod co w VC++.
Po kompilacji w katalogu projektu też powinien się pojawić exe.
Oprocz tego w Dev-C++ masz na dole zakładkę “Compile Log” - tam powinno być info co kompilator robił przy budowaniu.
W VC++ jest “Output”.
U mnie, na XP w obu środowiskach program się buduje - oczywiście nic nie wyświetla, ale jest uruchamiający się exe.
Dev-C++ 4.9.9.2, ale pewnie w WxDev-C++ tak samo jest.
kuhar
(Kubakuderski)
23 Czerwiec 2009 17:06
#9
może jestem jakoś wyjątkowo tępy ale zapytam… gdzie w vc++ jest przycisk kompiluj?
d.evil
(Kacper Cybuch)
23 Czerwiec 2009 17:06
#10
Build->Build solution albo F7;)
kuhar
(Kubakuderski)
23 Czerwiec 2009 17:12
#11
czyli że według tego powinno być coś takiego
int _tmain(int argc, _TCHAR* argv[]);
{
std::cout << "test";
return 0;
}
i wywala błędy:
1>------ Build started: Project: test, Configuration: Debug Win32 ------
1>Compiling...
1>test.cpp
1>e:\dokumenty\c++\test\test\test.cpp(4) : error C2061: syntax error : identifier '_TCHAR'
1>e:\dokumenty\c++\test\test\test.cpp(6) : error C2447: '{' : missing function header (old-style formal list?)
1>Build log was saved at "file://e:\Dokumenty\C++\test\test\Debug\BuildLog.htm"
1>test - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
co nie tak?
d.evil
(Kacper Cybuch)
23 Czerwiec 2009 17:24
#12
Powinno być coś takiego:
int main(int argc, char* argv[])
{
return 0;
}
kuhar
(Kubakuderski)
23 Czerwiec 2009 17:27
#13
d.evil - dzięki za pomoc… zrobiłem po swojemu i działa…
#include
int main()
{
std::cout << "test" << std::endl;
system("pause");
}
tylko pytanie początkującego - po co dawać return 0; i int main(int argc, char* argv[])
d.evil
(Kacper Cybuch)
23 Czerwiec 2009 17:46
#14
Nie zrobiłeś po swojemu, tylko okroiłeś parametry;)
Miał być najprostszy kompilujący się program i był;) Dodałeś wyświetlanie tekstu.
int main(int argc, char* argv[])
Pozwala na przekazanie programowi parametrów w trakcie wywołania.
A int i return - dzięki nim program coś może zwrócić na zewnątrz.
Napisałem Ci tak, żeby się skompilowało i w VC++ i w Dev - gdybyś dał “void main…”, to GCC w Dev będzie się pluł i nie skompilujesz;)
somekind
(somekind)
23 Czerwiec 2009 18:06
#15
Jeśli mogę się wtrącić…
Jak zrobić Hello World w Visual C++, tak aby był on w C++: