problem z biblioteką msvcp100.dll

problem z biblioteką msvcp100.dll
PO
  • Rejestracja:około 14 lat
  • Ostatnio:około 3 lata
  • Postów:211
0

Witam, napisałem u siebie kod w C++, w MS VisualStudio 2012 pod Win8. Problem jest tego typu, że uruchamiając program na innym komputerze wyświetla się komunikat o braku pliku MSVCP100.DLL, nie wiem jak temu zaradzić, program jest bardzo prosty, więc raczej nie powinien wymagać dodatkowych rzeczy.
Oto kod:

Kopiuj
//#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <Windows.h>
#include <cstdlib>

using namespace std;

string tab_text[2048], nazwa;
string imie = "Imie", nazwisko = "Nazwisko", album = "123456", grupa = "grupa1";//dane personalne

void wyswietl(int poczatek, int koniec, int info){
	system("CLS");
	cout << album << " " << nazwisko << " " << imie << " " << grupa << endl;
	cout << nazwa << endl;
	cout << "ESC - wyjscie z programu | STRZALKA W DOL - linia w dol | SPACJA - okno w dol"<< endl;
	if(info == 1) cout << "NIEPOPRAWNA ILOSC ARGUMETOW PROGRAMU";
	else if(info == 2) cout << "BLAD PRZY OTWIERANIU PLIKU";
	else{
		cout << endl << endl << endl << endl;
		for(int i=0; i<12; i++) cout <<" ";
		for(int i=0; i<56; i++) cout <<"*";
		cout << endl;
		string linia;
		for(int i=poczatek; i<koniec && i<2048; i++){
			for(int j=0; j<12; j++) cout <<" ";
			cout << "* ";
			linia = tab_text[i].substr(0, 52);
			if(linia.length() > 51) linia = tab_text[i].substr(0, 51) + ">";
			cout << linia;
			for(int j = 52 - linia.length(); j>0; j--) cout << " ";
			cout << " *" << endl;
		}
		for(int i=35-(koniec-poczatek); i>0; i--){
			for(int j=0; j<12; j++) cout <<" ";
			cout << "*";
			for(int j=0; j<54; j++) cout <<" ";
			cout << "*" << endl;
		}
		for(int i=0; i<12; i++) cout <<" ";
		for(int i=0; i<56; i++) cout <<"*";
	}
}

string wyluskaj_nazwe(string sciezka){

	int znaleziony = sciezka.find_last_of("/\\");
	return sciezka.substr(znaleziony+1);
}

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

	HANDLE uchwyt = GetStdHandle(STD_OUTPUT_HANDLE);
	SMALL_RECT wymiary = {0,0,79,49};

	if(!SetConsoleWindowInfo(uchwyt, true, &wymiary)) cout << "nie udalo sie ustawic rozmiaru konsoli :(" << endl;

	if(argc == 2){ 
		nazwa = wyluskaj_nazwe(argv[1]);

		ifstream plik(argv[1]);
		if(plik.is_open()){
			int koniec = 35, poczatek = 0;
			for(int i=0; plik.good() && i < 2048; i++)
				getline(plik, tab_text[i]);

			wyswietl(poczatek, koniec, 0);
			while(1){
				if(GetAsyncKeyState(VK_DOWN)){
					poczatek++;
					koniec++;
					wyswietl(poczatek, koniec, 0);
				}
				else if(GetAsyncKeyState(VK_SPACE)){
					poczatek = koniec;
					koniec += 35;
					wyswietl(poczatek, koniec, 0);
				}
				else if(GetAsyncKeyState(VK_ESCAPE)) break;				
			}
		}
		else wyswietl(0, 0, 2); //blad otwarcia pliku
	}
	else wyswietl(0, 0, 1); //blad ilosci argumentow

	return 0;
}

Proszę o pomoc, dzięki z góry

UT
  • Rejestracja:ponad 12 lat
  • Ostatnio:prawie 12 lat
0

Programy skompilowane przez Visual C++ wymagają tego: http://www.microsoft.com/en-us/download/details.aspx?id=5555

PO
  • Rejestracja:około 14 lat
  • Ostatnio:około 3 lata
  • Postów:211
0

Czyli jeśli w treści zadania mam napisane, że program ma być skompilowany i napisany w Visual C++ to nie jest to błędem za które może nie zostać zaliczone zadanie?

RE
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:12 miesięcy
0

Nie jest to błędem.

PO
  • Rejestracja:około 14 lat
  • Ostatnio:około 3 lata
  • Postów:211
0

Okej, dzięki;)

adf88
  • Rejestracja:ponad 21 lat
  • Ostatnio:prawie 12 lat
0

Alternatywnie możesz też wkompilować wszystko do pliku EXE to program nie będzie wymagać dll'ki - w opcjach projektu zmień ... yy nie pamiętam. Opcja nazywa się coś a'la "Runtime Library" i są do wyboru 4 pozycje:

  • MT
  • MT debug
  • MT DLL
  • MT debug DLL
    Dla konfiguracji "Release" wybierz "MT" zamiast "MT DLL" i jak komuś będziesz wysyłać exe to skompiluj go w trybie "Release".
edytowany 2x, ostatnio: adf88
RE
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:12 miesięcy
0

Nie powinno się niczego linkować statycznie, jeżeli nie ma się ku temu naprawdę dobrego powodu. Statyczne zlinkowanie runtime powoduje, że w przypadku wykrycia w nim luki bezpieczeństwa twój program narażony będzie do czasu jego ponownego wydania przez ciebie. W przypadku linkowania dynamicznego poprawka wydana przez Microsoft zadziała dla wszystkich aplikacji (nawet jeżeli wadliwa dllka wciąż będzie w katalogu twojego programu).

Jeżeli tak bardzo chcesz się pozbyć zależności od runtime C++ to nie używaj go. Jest to na tyle prosty program, że spokojnie można go napisać używając samego runtime C i skompilować program przez MinGW albo kompilator Microsoftu z Windows Driver Kit, które domyślnie linkują z systemowym runtime C (msvrt.dll).

edytowany 1x, ostatnio: Rev
adf88
  • Rejestracja:ponad 21 lat
  • Ostatnio:prawie 12 lat
0

Świecka prawda @Rev
Ale właśnie w tym przypadku (program na zaliczenie) uzasadnione jest linkowanie statyczne można olać kwestie bezpieczeństwa na rzecz wygody.

edytowany 1x, ostatnio: adf88
RE
Chodziło mi raczej o prawdziwie techniczne powody, a nie kwestie wygody ;).
adf88
Wiem :p Mi w sumie chodziło o to, że można olać te kwestie bezpieczeństwa, na rzecz wygody ;)
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 8 godzin
0

Z drugiej strony, dynamiczne linkowanie oznacza, że poprawka Microsoftu może zepsuć nam program (jeśli nieświadomie polegaliśmy na bugu).

adf88
  • Rejestracja:ponad 21 lat
  • Ostatnio:prawie 12 lat
0

Z trzeciej strony poprawka może wprowadzić nowy bug bezpieczeństwa :D

edytowany 1x, ostatnio: adf88
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)