Elektroda.pl
Elektroda.pl
X
MetalworkMetalwork
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[C++] Przenoszenie napisanego programu na inne komputery

02 Maj 2012 17:09 5506 9
  • Poziom 8  
    Witam,
    zaczynam programowanie w C++ i od pewnego czasu (mierzonego w ilości prób wyszukiwania na googlach) zmagam się z prozaicznym problemem:

    Przenoszenie napisanego programu na inne komputery.

    Jak dotąd udało mi się ustalić, że można przygotowywać pliki makefile, które sterują procesem kompilacji i linkowania i umożliwiają złożenie pliku exe ze wszystkimi wymaganymi bibliotekami itd.

    Problem leży jednak w tym, że nie mam zielonego pojęcia jak to technicznie się robi. Gdzie się ten plik makefile przygotowuje? Czy jest to część projektu? Skąd wiadomo jakie składniku muszą się znaleźć w finalnym .exe, żeby to działało na innych komputerach?

    Podejrzewam, że jest to dość elementarny problem. Używam Visual Studio 2010 Express, ostatnio też próbowałem Borland C++ Bulider 6. Pracuję na XP, a przenosiłbym chętnie na Win 7.

    Będę wdzięczny za pomoc.
  • MetalworkMetalwork
  • Poziom 30  
    Jakbyś przenosił z Windows na Linux, to by było coś. I trzeb by się nauczyć make, gcc i paru innych narzędzi. Ale tak, to kwestia kompatybilności bibliotek. Zwykle XP ->W7 działa exec bez żadnych ceregieli. Stare Borlandy miały problemy. Np Delphi 3 ale Delphi 7 już nie.
  • MetalworkMetalwork
  • Poziom 14  
    Sprecyzuj: chcesz przenieść gotowy program (podejrzewam, że składający się z jednego pliku *.exe), czy przenieść cały projekt (żeby go edytować)?

    Jeżeli skompilowałeś swój program i otrzymałeś exe (w folderze debug lub release w VS) to wystarczy na każdym innym komputerze z MS Windows odpalić ten plik - powinno działać. Kompilujesz w VS za pomocą przycisku F7 (F5), ale to już chyba wiesz.

    Jeżeli chcesz przenieść cały projekt to po prostu skopiuj cały folder z projektem (wystarczy przenieść kod źródłowy, ale przecież pamięci są duże i możemy sobie na taką rozrzutność pozwolić ;) ). Uruchom na innym komputerze z VS. Ważne jest, żeby przebudować na nowo cały projekt, bo czasem wychodzą kwiatki.

    Swoją drogą jak zaczynasz możesz spróbować pisać w Code::Blocks. Bardzo fajne środowisko (obsługuje C i C++). Visual Studio to już kombajn.
  • Poziom 8  
    Precyzuję:
    Chcę przenieść gotowy program, prościutki "hello world". Bez problemu działa u mnie, gdzie został napisany. Zrobiłem Relase. Przenoszę .exe na innego kompa (Win 7) i uruchamiam i błąd: brak pliku MSCVP100.dll.

    W programiku odnoszę się jedynie do <iostream>, więc podejrzewam, że tego "źródła" mu brakuje na drugim kompie no i jak temu zaradzić?
    Chcę uniknąć instalowania VS na innych komputerach. :)

    Może ja w ogóle zaczynam źle/nie na tym poziomie merytorycznym?

    EDIT: Doczytałem w sieci, że można na innych komputerach instalować "Microsoft Visual C++ 2010 Redistributable Package (x86)", co jak podejrzewam załatwi problem funkcjonowania tego programu, ale ciągle mnie takie rozwiązanie nie satysfakcjonuje: bo program ma 9kB, a paczka 25MB. Jak można taki manewr ominąć? (nawet jeśli wymaga to więcej pracy z mojej strony)
  • Poziom 8  
    Wskazałem typ win32; console application; empty project. Tej opcji o której piszesz w VS nie zauważyłem (ale też nie szukałem głęboko).
  • Pomocny post
    Poziom 17  
    Kolega niech zainteresuje się tym wątkiem :

    http://stackoverflow.com/questions/2035287/st...ime-library-linking-for-visual-c-express-2008

    Cytat:
    Project Properties -> Configuration Properties -> C/C++ -> Code Generation -> Runtime Library. Dll and Dll Debug are for dynamic linking.


    Zawsze można sprawdzić tabelę importów po takim czymś, ja używam ExeScope (tylko dla 32 bitowych PE).
  • Poziom 8  
    Kolega się zainteresował, przeczytał i przestawił opcję w runtime library na /MT. Pomogło - działa.

    Teraz będę musiał więcej o tym poczytać, bo opinie naukowców były podzielone w tym wątku o bibliotekach. Ten ExeScope sprawdza jakich konkretnych bibliotek używa program (żeby ew. optymalizować...), czy robi coś innego? Też się będę musiał dokładniej przyjrzeć.

    Dziękuję za pomoc.
  • Poziom 42  
    Generalnie ExeScope (podobnie jak WinHacker lub ResHacker) to program głównie do podglądania i edycji zasobów plików wykonywalnych. A w zasobach jest wiele przydatnych opcji ;)

    Co do wymienionej przeze mnie - mówiłem o Borlandzie, a nie o VC++, choć jak kolega wskazał - także tam znajduje się analogiczna opcja.

    Sprawa używania jest raczej prosta - jeśli masz dużo EXE/DLL i zależy Ci na rozmiarze, bądź potrzebujesz informacji o klasach (RTT), to używasz tak, że łączysz (czyli jak miałeś wcześniej). W przeciwnych wypadkach - nie ma potrzeby - ułatwisz uzytkownikowi instalację. Choć warto nadmienić, że gro programów i tak wymaga zainstalowanego Redistributable Package.
  • Pomocny post
    Użytkownik usunął konto