• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Brak biblioteki przy uruchomieniu programu

Object Storage Arubacloud
0 głosów
222 wizyt
pytanie zadane 31 października 2015 w C i C++ przez Prime_Bull Obywatel (1,820 p.)

Witam. Ściągnąłem sobie pakiet MinGW i zacząłem kompilować programy z poziomu konsoli za pomocą g++. Gdy uruchamiam prosty, napisany przeze mnie kalkulator z poziomu konsoli to działa, jednak jeśli próbuję uruchomić z poziomu ekploratora windows (myszką) to wyskakuje błąd. 

Kod kalkulatora:

#include <iostream>
#include <stdlib.h>
#include <string.h>

using namespace std;

int main(int argc, char* argv[])
{
	int result;

 
	if(argc > 4 || argc < 4)
	{
		cout << "\nBlad: Wpisz poprawnie wyrazenie\n";
	}
	else if(strcmp(argv[1], "+"))
	{
		result = atoi(argv[1]) + atoi(argv[3]);
		cout << "\nWynik = " << result << "\n";
	}

	return 0;
}

 

3 odpowiedzi

0 głosów
odpowiedź 31 października 2015 przez radek024 Szeryf (77,160 p.)
Poszukaj tej bibloteki na internecie, zainstaluj, zrestatruj i działaj ;)
komentarz 31 października 2015 przez furas Maniak (53,800 p.)
edycja 31 października 2015 przez furas

Na szybko to przy kompilacji dodajesz -static 

    gcc -static program.c -o program.exe 

lub -static-libgcc 

    gcc -static-libgcc program.c -o program.exe 

W komentarzu do opisu na StackOverflow ktoś napisał, że musiał dodać jeszcze -static-libstdc++ czyli pewnie coś takiego należało by zrobić.
 

    gcc -static-libgcc -static-libstdc++ program.c -o program.exe 

ale może samo -static całość załatwi. 

Po użyciu -static plik programu powinien być większy.

komentarz 1 listopada 2015 przez Prime_Bull Obywatel (1,820 p.)
Dzięki za szybką pomoc :) Działa samo -static, a rozmiar zwiększył się z 69,1KB na 1,18MB :/ No, ale cóż.
komentarz 1 listopada 2015 przez furas Maniak (53,800 p.)
Jakbyś policzył początkowy wielkość programu + dll to wyszło by pewnie podobnie :)

Jest konsolowy program strip, który próbuje wyrzucić z programu niepotrzebne rzeczy - np. informacje dla debugera ale nie wiem czy jest on w zestawie z MinGW. Jest jeszcze konsolowy program upx, który kompresuje program tak aby się automaczycznie rozkompresowywał do pamięci podczas każdego startu.

http://upx.sourceforge.net/
komentarz 1 listopada 2015 przez furas Maniak (53,800 p.)

ps. jeśli kompilujesz w konsoli to warto poznać program make i pliki makefile. Przygotowujesz przykładowo plik makefile o zawartości 
 

program.exe: program.c
    gcc -static program.c -o program.exe


i potem wydajesz tylko komendę `make` a on szuka w bierzącym katalogu pliku makefile i na jego postawie sprawdza czy plik `program.c` jest nowszy od `program.exe` (czyli czy coś zmodyfikowano w kodzie C) i wtedy uruchamia to co jest w drugiej linii (i następnych).

Druga linia (i następne z komendami) musi mieć wcięcie zrobione tabulatorem.

W pliku makefile można mieć więcej takich reguł - np. kasowanie niepotrzebnych plików tymczasowych stworzonich podczas kompilacji.

komentarz 1 listopada 2015 przez Prime_Bull Obywatel (1,820 p.)
Dzięki ;) muszę się tym głębiej zainteresować, bardzo przydatne.
0 głosów
odpowiedź 31 października 2015 przez furas Maniak (53,800 p.)
Poszukaj ten plik w katalogach (wydaje mi się, że powinien gdzieś być wraz z MinGw)  i umieść w tym samym katalogu co kalkulator. Jeśli będziesz chciał komuś dać ten program to musisz razem z dll.

Możesz jeszcze pokombinować z kompilacją z linkowaniem statycznym aby odpowiedni kod z tej bibliteki dokleiło do pliku programu ale to wymaga posiadania podobnego pliku jak ,dll ale z rozszerzeniem .lib
0 głosów
odpowiedź 31 października 2015 przez Wiktor Majchrzak Użytkownik (760 p.)
Możliwe że przy instalacji nie zainstalowały ci się biblioteki

Podobne pytania

0 głosów
1 odpowiedź 3,209 wizyt
0 głosów
3 odpowiedzi 240 wizyt
pytanie zadane 16 stycznia 2016 w C i C++ przez Prime_Bull Obywatel (1,820 p.)
0 głosów
1 odpowiedź 152 wizyt
pytanie zadane 30 czerwca 2018 w Offtop przez Hiskiel Pasjonat (22,830 p.)

92,568 zapytań

141,420 odpowiedzi

319,618 komentarzy

61,954 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...