Programm auch für Nichtprogrammierer startbar machen?
-
Hallo, ich hätte da eine kleine Frage.
Ich wollte einmal einigen meiner Freunde (die kein Visual C++ auf dem PC haben) mein Programm zeigen, jedoch ließ sich das Programm nicht öffnen. Also:
Damit andere auch das Programm starten können muss man folgendes tun:
Projekt -> Projekt-Eigenschaften -> C/C++ -> CodegenerierungDa muss man was umändern. Und zwar darf die Laufzeitbibliothek nicht auf "Multithreaded-DLL (/MD)" eingestellt sein. Meine Frage ist, was muss ich einstellen, damit jeder mein Programm starten kann?
Multithreaded (/MT)
Multithreaded-Debug (/MTd)
oder
Multithreaded-Debug-DLL (/MDd)
-
Na bei der Debug-Konfiguration nimmst du Multithreaded-Debug-DLL (/MDd) und bei der Release-Konfiguration Multithreaded (/MT) und gibts deinen Freunden das Release.
(Du kannst alle Einstellungen getrennt für Debug und Release vornehmen. Wählen im Eigenschaftsseiten-Fenster links oben die Konfiguration aus.)
-
Vielen Dank. Jetzt funktioniert alles
-
Wenn die Release Variante mit "Multithreaded" (ohne DLL) kompiliert wird, dann würde ich bei Debug auch die "ohne DLL" Variante nehmen, also "Multithreaded-Debug".
-
hustbaer schrieb:
Wenn die Release Variante mit "Multithreaded" (ohne DLL) kompiliert wird, dann würde ich bei Debug auch die "ohne DLL" Variante nehmen, also "Multithreaded-Debug".
Wenn ich das tue, wirft mein Compiler eine riesige Fehlermeldung:
1>------ Erstellen gestartet: Projekt: Calcul-X v0.1, Konfiguration: Debug Win32 ------ 1> Time.cpp 1> main.cpp 1> Fehler.cpp 1> CKubik.cpp 1> CFlaeche.cpp 1> CASMD.cpp 1> Code wird generiert... 1>CASMD.obj : error LNK2005: "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::endl(class std::basic_ostream<char,struct std::char_traits<char> > &)" (?endl@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>CASMD.obj : error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits<char> > & __thiscall std::basic_ostream<char,struct std::char_traits<char> >::operator<<(class std::basic_ostream<char,struct std::char_traits<char> > & (__cdecl*)(class std::basic_ostream<char,struct std::char_traits<char> > &))" (??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z)ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>CASMD.obj : error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits<char> > & __thiscall std::basic_ostream<char,struct std::char_traits<char> >::operator<<(double)" (??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@N@Z) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>CASMD.obj : error LNK2005: "public: class std::locale::facet * __thiscall std::locale::facet::_Decref(void)" (?_Decref@facet@locale@std@@QAEPAV123@XZ) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>CASMD.obj : error LNK2005: "public: class std::locale __thiscall std::ios_base::getloc(void)const " (?getloc@ios_base@std@@QBE?AVlocale@2@XZ) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>CASMD.obj : error LNK2005: "public: void __thiscall std::locale::facet::_Incref(void)" (?_Incref@facet@locale@std@@QAEXXZ) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>CASMD.obj : error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits<char> > & __thiscall std::basic_ostream<char,struct std::char_traits<char> >::flush(void)" (?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@XZ) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>CASMD.obj : error LNK2005: "public: void __thiscall std::basic_ios<char,struct std::char_traits<char> >::setstate(int,bool)" (?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>CASMD.obj : error LNK2005: "public: class std::basic_streambuf<char,struct std::char_traits<char> > * __thiscall std::basic_ios<char,struct std::char_traits<char> >::rdbuf(void)const " (?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>CASMD.obj : error LNK2005: "public: class std::basic_istream<char,struct std::char_traits<char> > & __thiscall std::basic_istream<char,struct std::char_traits<char> >::operator>>(double &)" (??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAN@Z) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>CASMD.obj : error LNK2005: "public: void __thiscall std::basic_ios<char,struct std::char_traits<char> >::clear(int,bool)" (?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>CASMD.obj : error LNK2005: "public: char __thiscall std::basic_ios<char,struct std::char_traits<char> >::fill(void)const " (?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDXZ) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>CASMD.obj : error LNK2005: "public: bool __thiscall std::basic_istream<char,struct std::char_traits<char> >::_Ipfx(bool)" (?_Ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE_N_N@Z) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>CASMD.obj : error LNK2005: "public: bool __thiscall std::ctype<char>::is(short,char)const " (?is@?$ctype@D@std@@QBE_NFD@Z) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>CASMD.obj : error LNK2005: "public: bool __thiscall std::ios_base::good(void)const " (?good@ios_base@std@@QBE_NXZ) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>CASMD.obj : error LNK2005: "public: int __thiscall std::ios_base::flags(void)const " (?flags@ios_base@std@@QBEHXZ) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>CASMD.obj : error LNK2005: "public: int __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::sgetc(void)" (?sgetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>CASMD.obj : error LNK2005: "public: int __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::snextc(void)" (?snextc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>CASMD.obj : error LNK2005: "public: int __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::sputc(char)" (?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHD@Z) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>CASMD.obj : error LNK2005: "protected: char * __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::gptr(void)const " (?gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>CASMD.obj : error LNK2005: "protected: char * __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::_Gninc(void)" (?_Gninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>CASMD.obj : error LNK2005: "public: void __thiscall std::basic_ostream<char,struct std::char_traits<char> >::_Osfx(void)" (?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>CASMD.obj : error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits<char> > * __thiscall std::basic_ios<char,struct std::char_traits<char> >::tie(void)const " (?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>CASMD.obj : error LNK2005: "protected: char * __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::_Pninc(void)" (?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>CASMD.obj : error LNK2005: "public: __thiscall std::locale::id::operator unsigned int(void)" (??Bid@locale@std@@QAEIXZ) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>CASMD.obj : error LNK2005: "public: static unsigned int __cdecl std::ctype<char>::_Getcat(class std::locale::facet const * *,class std::locale const *)" (?_Getcat@?$ctype@D@std@@SAIPAPBVfacet@locale@2@PBV42@@Z) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>CASMD.obj : error LNK2005: "public: __int64 __thiscall std::ios_base::width(void)const " (?width@ios_base@std@@QBE_JXZ) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>CASMD.obj : error LNK2005: "public: __int64 __thiscall std::ios_base::width(__int64)" (?width@ios_base@std@@QAE_J_J@Z) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>CASMD.obj : error LNK2005: "public: __int64 __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::sputn(char const *,__int64)" (?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE_JPBD_J@Z) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>CASMD.obj : error LNK2005: "public: __thiscall std::_Container_base12::_Container_base12(void)" (??0_Container_base12@std@@QAE@XZ) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>CASMD.obj : error LNK2005: "public: __thiscall std::_Container_base12::~_Container_base12(void)" (??1_Container_base12@std@@QAE@XZ) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. 1>CASMD.obj : error LNK2005: "public: void __thiscall std::_Container_base12::_Orphan_all(void)" (?_Orphan_all@_Container_base12@std@@QAEXXZ) ist bereits in msvcprtd.lib(MSVCP100D.dll) definiert. ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
-
Wisst ihr was ich bemerkt habe?
Im VS2010 funktionniert es mit der Codegenerierung nicht jedoch läuft es im VS2008 einwandfrei.
Gibt es einen Grund dafür oder muss man im VS2010 etwas zusätzliches dafür machen?
-
Du hast unterschiedliche Compiler-Einstallungen für die Daterien oder Du linkst eine andere Datei dazu, welche eine andere Compiler-Einstellung hat.
-
Jochen Kalmbach schrieb:
Du hast unterschiedliche Compiler-Einstallungen für die Daterien oder Du linkst eine andere Datei dazu, welche eine andere Compiler-Einstellung hat.
Gab's da nicht immer so ein bekanntes Video auf Deutsch wo das genau erklärt wurde? Ich suche gerade wie verrückt danach - kennt einer das Video vllt. noch?