Mit Visual C++ kompilierte Programme weitergeben

Windowsspezifische Probleme, WinAPI, conio.h
Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Mit Visual C++ kompilierte Programme weitergeben

Beitrag von Xin » Fr Jul 03, 2009 5:36 pm

dani93 hat geschrieben:Sollte es jemand hinbekommen wäre das einen FAQ-Eintrag wert.
Dafür müsste man erstmal Dein Projekt und Deine Umgebung kopiert haben.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Mit Visual C++ kompilierte Programme weitergeben

Beitrag von nufan » Fr Jul 03, 2009 5:51 pm

Xin hat geschrieben:
dani93 hat geschrieben:Sollte es jemand hinbekommen wäre das einen FAQ-Eintrag wert.
Dafür müsste man erstmal Dein Projekt und Deine Umgebung kopiert haben.
Das war eher allgemein gemeint und nicht auf mein Projekt bezogen.
Mein Projekt könnt ihr gerne haben. Ist aber nur C++ mit SDL, SDL_ttf und SDL_net. Und an SDL liegt es wahrscheinlich nicht.
Als Umgebung habe ich MS Visual C++ Express 2008 SP 1. Kopieren wäre da etwas aufwändiger ;)

Ich hab sogar versucht das Programm mit wine zu starten:

Code: Alles auswählen

fixme:actctx:parse_assembly_elem wrong version for assembly manifest
fixme:actctx:parse_manifest_buffer failed to parse manifest L"c:\\pfadzum\\projekt\\Microsoft.VC90.CRT.manifest"
fixme:actctx:parse_depend_manifests Could not find dependent assembly L"Microsoft.VC90.CRT"
err:module:attach_process_dlls "MSVCR90.dll" failed to initialize, aborting
err:module:LdrInitializeThunk Main exe initialization for L"c:\\pfadzum\\programm.exe" failed, status c0000142

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Mit Visual C++ kompilierte Programme weitergeben

Beitrag von cloidnerux » Fr Jul 03, 2009 8:45 pm

Es kann auch daran liegen, das du das Projekt im Debug-Modus Kompilierst, wobei der Compiler automatisch Debug-Hilfen einbaut.
probeirs doch mal mit Dem Umstellen von Debug auf Relese, entweder oben im Menü oder unter den projekteigenschaften.
Redundanz macht wiederholen unnötig.
quod erat expectandum

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Mit Visual C++ kompilierte Programme weitergeben

Beitrag von nufan » Fr Jul 03, 2009 8:51 pm

cloidnerux hat geschrieben:Es kann auch daran liegen, das du das Projekt im Debug-Modus Kompilierst, wobei der Compiler automatisch Debug-Hilfen einbaut.
probeirs doch mal mit Dem Umstellen von Debug auf Relese, entweder oben im Menü oder unter den projekteigenschaften.
Hab bereits zuvor beides probiert, immer mit dem gleichen Ergebnis.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Mit Visual C++ kompilierte Programme weitergeben

Beitrag von cloidnerux » Fr Jul 03, 2009 9:14 pm

Ich habe noch das hier gefunden: http://www.gm-d.de/wbb/sonstiges/andere ... ss-progra/
Projekteigenschaften->Konfiguration->C/C++->Codegenerierung->Laufzeitbibilothek und dann auf Multithread.
Wenn das nciht geht musst du auf dienem Anderen Rechner mal die Visual C++ 2008 Resttributale Instalieren.
Redundanz macht wiederholen unnötig.
quod erat expectandum

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Mit Visual C++ kompilierte Programme weitergeben

Beitrag von nufan » Fr Jul 03, 2009 9:30 pm

cloidnerux hat geschrieben:Ich habe noch das hier gefunden: http://www.gm-d.de/wbb/sonstiges/andere ... ss-progra/
Projekteigenschaften->Konfiguration->C/C++->Codegenerierung->Laufzeitbibilothek und dann auf Multithread.
So will das Programm überhaupt nicht kompilieren/linken:

Code: Alles auswählen

1>msvcrt.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) ist bereits in LIBCMT.lib(typinfo.obj) definiert.
1>msvcrt.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) ist bereits in LIBCMT.lib(typinfo.obj) definiert.
1>msvcrt.lib(MSVCR90.dll) : error LNK2005: _isspace ist bereits in LIBCMT.lib(_ctype.obj) definiert.
1>msvcrt.lib(MSVCR90.dll) : error LNK2005: ___iob_func ist bereits in LIBCMT.lib(_file.obj) definiert.
1>msvcrt.lib(MSVCR90.dll) : error LNK2005: _fclose ist bereits in LIBCMT.lib(fclose.obj) definiert.
1>msvcrt.lib(MSVCR90.dll) : error LNK2005: _exit ist bereits in LIBCMT.lib(crt0dat.obj) definiert.
cloidnerux hat geschrieben:Wenn das nciht geht musst du auf dienem Anderen Rechner mal die Visual C++ 2008 Resttributale Instalieren.
Da bleib ich lieber bei mingw, da muss ich auch nur eine zusätzliche DLL mitgeben.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Mit Visual C++ kompilierte Programme weitergeben

Beitrag von Xin » Sa Jul 04, 2009 9:16 am

dani93 hat geschrieben:
cloidnerux hat geschrieben:Ich habe noch das hier gefunden: http://www.gm-d.de/wbb/sonstiges/andere ... ss-progra/
Projekteigenschaften->Konfiguration->C/C++->Codegenerierung->Laufzeitbibilothek und dann auf Multithread.
So will das Programm überhaupt nicht kompilieren/linken:

Code: Alles auswählen

1>msvcrt.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) ist bereits in LIBCMT.lib(typinfo.obj) definiert.
1>msvcrt.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) ist bereits in LIBCMT.lib(typinfo.obj) definiert.
1>msvcrt.lib(MSVCR90.dll) : error LNK2005: _isspace ist bereits in LIBCMT.lib(_ctype.obj) definiert.
1>msvcrt.lib(MSVCR90.dll) : error LNK2005: ___iob_func ist bereits in LIBCMT.lib(_file.obj) definiert.
1>msvcrt.lib(MSVCR90.dll) : error LNK2005: _fclose ist bereits in LIBCMT.lib(fclose.obj) definiert.
1>msvcrt.lib(MSVCR90.dll) : error LNK2005: _exit ist bereits in LIBCMT.lib(crt0dat.obj) definiert.
Offensichtlich bindest Du so die gleichen Funktionen mehrfach ein. Also ist die Frage, ob Du die LibCMT.lib brauchst oder eine andere... Diejenige, die Du nicht brauchst, musst Du dann sperren. (Linker, Libs nicht verwenden: Libcmt.lib - bzw. die andere)
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Mit Visual C++ kompilierte Programme weitergeben

Beitrag von cloidnerux » Sa Jul 04, 2009 2:23 pm

Vielleicht wäre es hilfreich mal dein Komplettes projekt zu bekommen um es auf dem eigenen Rechner zu Compilieren.
Redundanz macht wiederholen unnötig.
quod erat expectandum

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Mit Visual C++ kompilierte Programme weitergeben

Beitrag von nufan » Sa Jul 04, 2009 3:01 pm

Xin hat geschrieben:Offensichtlich bindest Du so die gleichen Funktionen mehrfach ein. Also ist die Frage, ob Du die LibCMT.lib brauchst oder eine andere... Diejenige, die Du nicht brauchst, musst Du dann sperren. (Linker, Libs nicht verwenden: Libcmt.lib - bzw. die andere)
Ich hab keine Ahnung was libcmt oder "die andere" ist. Bewusst habe ich die nicht eingebunden. Ich hab ein paar Header mehrfach eingebunden, die haben aber alle eine Präprozessor-Bedingung, damit der Code nicht eingefügt wird.
cloidnerux hat geschrieben:Vielleicht wäre es hilfreich mal dein Komplettes projekt zu bekommen um es auf dem eigenen Rechner zu Compilieren.
Ich habe jetzt alle Einstellungen zurückgesetzt, so dass man es kompilieren kann. Zum Kompilieren müssen SDL, SDL_ttf und SDL_net Header im include/SDL/-Verzeichnis liegen und die libs im libs/-Verzeichnis. Zum Ausführen des Programms außerhalb der IDE muss der Inhalt des Ordners "DLLs" ins Verzeichnis der exe kopiert werden. Das gleiche gilt für "arial.ttf" und "typing.bmp".
Bugs sollten im Programm keine sein, aber einige Sachen sind nur halb fertig (z.B. kann man mehrzeiligen Text eingeben, bei der Ausgabe steht aber alles in einer Zeile) bzw. übers GUI noch nicht verfügbar. Der Ordnername ist eigentliche nur eine Abkürzung, trifft aber zurzeit auch auf den Code zu ^^
Aber hier gehts ja nicht um das was drinsteht sondern wie mans ausführt.

Link

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Mit Visual C++ kompilierte Programme weitergeben

Beitrag von Dirty Oerti » So Jul 05, 2009 1:01 pm

Woran es liegt, dass du dein Programm nicht ausliefern kannst ist dir aber inzwischen klar, oder?

Es fehlt einfach die "Laufzeitumgebung" von Visual C++.
Dieser Compiler erstellt nämlich "optimierten" Code, der im Gegenzug dafür aber die CRT braucht.
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Antworten