Skocz do zawartości

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

Sabi

Rozwiązany: Uruchamianie programów z C na MS Visual Studio

Polecane posty

Witajcie, jeżeli to nie sprawia problemu, prosiłbym o pomoc z pewnym, nie ma co ukrywać, głupim problemem. Jako, że w ramach MSDN Academic Alliance otrzymałem dostęp min. do VS 2008, zdecydowałem się wykorzystać go do ćwiczenia w domu z programowania na studiach. Dotychczas ćwiczyłem to jedynie na uczelni, gdzie wykorzystywany był wbudowany program z dystrybucji Linuxa o nazwie Debian - po prostu pisaliśmy program w pliku tekstowym o rozszerzeniu .c, kazaliśmy programowi go "zbudować" (build) i uruchomić. Pytanie brzmi - jak mam zrobić to samo w VS? Na pasku opcji nie widzę żadnych poleceń od kompilacji ani chociaż testowania, a z samego .c przecież program się nie uruchomi. Plik pomocy o tym nie wspomina, Google pokazują jedynie pieśni pochwalne na temat VS.

Od razu dziękuję za wszelką pomoc.

Link do komentarza
Udostępnij na innych stronach

Jeśli chcesz skompilować z poziomu wiersza poleceń pojedynczy plik, to robisz co następuje.

1. Ustaw zmienne środowiskowe, w tym celu można uruchomić plik vcvars.bat znajdujący się w katalogu (ścieżka do instalacji Visual Studio)\VC\bin\, lub po prostu uruchomić wiersz poleceń Visual Studio, który znajdziesz w menu Start.

2. Od tego momentu, w wierszu poleceń, w którym wywołałeś plik możesz używać narzędzi do kompilacji. Dla pojedynczego pliku o rozszerzeniu .c należy użyć programu cl.exe. A do kompilacji z pomocą plików makefile programu nmake.

Link do komentarza
Udostępnij na innych stronach

A nie możesz wykorzystać IDE?

Tu masz linki: http://msdn.microsoft.com/en-us/library/ms235639(VS.80).aspx

http://msdn.microsoft.com/en-us/library/610ecb4h(VS.80).aspx

Zapytanie: http://www.google.pl/search?hl=pl&clie...mp;aql=&oq=

A tu link dla nmake: http://msdn.microsoft.com/en-us/library/dd9y37ha(VS.71).aspx

Przy VS bardzo istotne jest rozszerzenie plików, .cpp to C++, a .c to język C.

Wraz z 2010 ma zostać zmieniony system budowania dla C/C++.

Link do komentarza
Udostępnij na innych stronach

Z drugiego linka zlazałem odesłanie do materiałów o wersji 2008, teraz powinienem sobie już jakoś poradzić.

Dzięki za pomoc.

////////

Edit: A jednak coś poszło nie tak, nie rozumiem komunikau o błędzie:

errorvh.png

Link do komentarza
Udostępnij na innych stronach

Nie rozumiem, jak mam "wywołać komendę w innym katalogu". Command Prompt uruchamiam z paska zadań:

http://img214.imageshack.us/img214/8789/commandc.png

A samo polecenie (zgodnie z tym, co napisano tutaj: http://msdn.microsoft.com/en-us/library/ms235639.aspx ), podaję mu tak:

http://img716.imageshack.us/img716/9088/command1.png

http://img690.imageshack.us/img690/5571/command2.png

Link do komentarza
Udostępnij na innych stronach

Istotna jest ścieżka z jakiej rozpoczynasz wywoływanie komendy. Tzn. najpierw za pomocą cd zmień katalog na ten, w którym znajdują się pliku projektu, a następnie spróbuj wpisać komendę.

[edit]

Skoro masz pliki bezpośrednio na dysku, to wystarczy zmienić dysk wpisując F:

Link do komentarza
Udostępnij na innych stronach

Ok, to rzeczywiście pomogło, dzięki wielkie :]

Co prawda, sam kompilator wyrzucił parę błędów (http://img710.imageshack.us/img710/3509/warningl.png), ale to da się naprawić. (Sam plik .c dołączyłem do posta, jeżeli chciałbyś rzucić na niego okiem.).

15_03_10.zip

Jeszcze raz dzięki za pomoc!

Link do komentarza
Udostępnij na innych stronach

Tablice dynamiczne w C tworzy się inaczej i stąd błędy. Wpisz w google coś w stylu tablice dynamiczne c, to pewnie znajdziesz jak należy definiować tablice dynamiczne. Jeśli będziesz miał problemy, to pisz.

Link do komentarza
Udostępnij na innych stronach

Żeby nie zaśmiecać forum i nie zakładać nowego tematu, swój kolejny problem zgłaszam już tutaj.

Chociaż wykładowca wysłał mi poprawioną wersję mojego programu z komentarzami, to jednak, aby zrozumieć w pełni problem, musiałem sam napisać w końcu wersję poprawną. Jednakże, program napisany przezemnie zawiesza się nagle i nie jestem w stanie stwierdzić dlaczego. Plik .c jak poprzednio dołączam do posta. Ten z dodanym _mod to wersja wykładowcy, ten z _popr2 to moja.

Bardzo prosiłbym o wyjaśnienie, dlaczego program się zawiesza. Od razu dziękuję za wszelką pomoc.

15_03_10mod.zip

15_03_10_popr2.zip

Link do komentarza
Udostępnij na innych stronach

Błędów jest sporo. Poza błędnym użyciem scanf warto też odnotować błędy w if w funkcji wyp (= zamiast ==). Tak jak napisał wies.niak nie należy używać goto, lepiej jest np. użyć pętli while.

Link do komentarza
Udostępnij na innych stronach

Zamieniłem wszystkie goto na do while (wybaczcie, ale pierwszy kontakt z programowaniem miałem na Atari dziadka, czyli Basicu), ale z błędów (raczej warning'ów) pozostaje tylko jeden wyrzucany przez kompilator: " 'wyp' must return a value". Nie rozumiem, przecież funkcja wyp służy właśnie do wypełniania samej tabeli (losowo lub ręcznie) i nadpisuje jej elementy. Dlaczego wg kompilatora nie zwraca żadnych wartości?

Ponownie dodaję do posta plik .c i dziękuję za wszelką pomoc i sugestie.

15_03_10_popr2.zip

Link do komentarza
Udostępnij na innych stronach

W linii 82 nadal masz błąd.

Powinno być

scanf ("%d",&N);

Funkcja int powinna zwracać wartość typu int. Chodzi o to, że zwracane wartości mogą być wykorzystywane w celach diagnostycznych.

Pętlę też bym zrobił nieco inaczej, bo obecnie po wyborze zera i tak jeszcze jeden raz prosi o wpisanie wszystkich danych.

Link do komentarza
Udostępnij na innych stronach

Gość
Temat jest zablokowany i nie można w nim pisać.


  • Kto przegląda   0 użytkowników

    • Brak zalogowanych użytkowników przeglądających tę stronę.
×
×
  • Utwórz nowe...