Anwendungskonfigurationsfehler
-
Hey Leute,
ich habe mit Visual C++ 2008 eine Windows Form Anwendung programmiert und einige nicht in Windows enthaltene header-Dateien und eine lib eingefügt.
Jetzt habe ich das Problem, das ich das Programm auf einem anderen Rechner nicht zum laufen kriege, weil die Anwendugskonfiguration nicht korrekt ist, allerdings läuft das Programm auf meinem Rechner ohne beschwerden...
Wie kann ich das Problem beheben?Danke im Voraus
MFG dercoder
-
Erstelle ein Setup für Deine Anwendung, nur so bekommst Du alle Dateien auf den Zielrechner.
Hand, Scholle
-
Entweder fehlt dir die entsprechende VC++ Runtime oder das entsprechende .NET Framework.
Falls Du mit VS2008 kompiliert hast kommen die beiden Runtime in Frage:
VC++ Runtime 2008: http://www.microsoft.com/DOWNLOADS/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en
VC++ Runtime 2008, SP1: http://www.microsoft.com/DOWNLOADS/details.aspx?familyid=A5C84275-3B97-4AB7-A40D-3802B2AF5FC2&displaylang=enFür die 2005 Version findest Du auch die entsprechenden VC++ Runtime Setups.
Beim .NET Framework kommen folgende Versionen in Frage:
.NET Framework 2.0: http://www.microsoft.com/downloads/details.aspx?displaylang=de&FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5
.NET Framework 3.0: http://www.microsoft.com/downloads/details.aspx?familyid=10CC340B-F857-4A14-83F5-25634C3BF043&displaylang=de
.NET Framework 3.5: http://www.microsoft.com/downloads/details.aspx?familyid=333325FD-AE52-4E35-B531-508D977D32A6&displaylang=de
.NET Framework 3.5, SP1: http://www.microsoft.com/downloads/details.aspx?familyid=AB99342F-5D1A-413D-8319-81DA479AB0D7&displaylang=deIm Notfall oder um auszuprobieren einfach alle installieren.
Simon
-
es wäre allerdings am besten, wenn ich das programm portabal hätte und nicht noch extra was installieren müsste... ich probiere mal die methode von Scholle
*EDIT*
Gibts nicht eine andere Methode, wie ich das zum laufen krieg? Kann man nicht die Libs und header-Dateien in die exe reinkompilieren?MFG dercoder
-
Bei .NET nicht. Die C++ Runtime Libraries schon.
Simon
-
Kannste mir sagen wo das geht?
Ich benutze Visual Studio 2008..
-
du musst das programm "releasen" sonst geht es nicht
-
gaz123 schrieb:
du musst das programm "releasen" sonst geht es nicht
Guter Punkt: Denn Debug Builds sind auch gegen die Debug Runtime Libs gelinkt, und die sind natürlich im vcredist Packet nicht dabei.
Simon
-
lol... wenn ich release dann kommen x-tausend fehler:
.\main.cpp(64) : error C2440: '=': 'char [13]' kann nicht in 'LPCWSTR' konvertiert werden
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>.\main.cpp(67) : error C2664: 'CreateWindowExW': Konvertierung des Parameters 2 von 'char [13]' in 'LPCWSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>.\main.cpp(84) : error C2664: 'GetSystemDirectoryW': Konvertierung des Parameters 1 von 'char [260]' in 'LPWSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>.\main.cpp(89) : error C2664: 'GetUserNameW': Konvertierung des Parameters 1 von 'char [255]' in 'LPWSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>.\main.cpp(90) : error C2664: 'lstrcpyW': Konvertierung des Parameters 1 von 'char [128]' in 'LPWSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>.\main.cpp(91) : error C2664: 'lstrcatW': Konvertierung des Parameters 1 von 'char [128]' in 'LPWSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>.\main.cpp(92) : error C2664: 'GetDateFormatW': Konvertierung des Parameters 4 von 'const char [16]' in 'LPCWSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>.\main.cpp(93) : error C2664: 'lstrcatW': Konvertierung des Parameters 1 von 'char [128]' in 'LPWSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>.\main.cpp(94) : error C2664: 'lstrcatW': Konvertierung des Parameters 1 von 'char [128]' in 'LPWSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>.\main.cpp(95) : error C2664: 'GetTimeFormatW': Konvertierung des Parameters 4 von 'const char [9]' in 'LPCWSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>.\main.cpp(96) : error C2664: 'lstrcatW': Konvertierung des Parameters 1 von 'char [128]' in 'LPWSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>.\main.cpp(123) : error C2664: 'GetModuleFileNameW': Konvertierung des Parameters 2 von 'char [260]' in 'LPWCH' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>.\main.cpp(124) : error C2664: 'GetSystemDirectoryW': Konvertierung des Parameters 1 von 'char [260]' in 'LPWSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>.\main.cpp(126) : error C2664: 'CopyFileW': Konvertierung des Parameters 1 von 'char [260]' in 'LPCWSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>.\main.cpp(127) : error C2664: 'RegOpenKeyExW': Konvertierung des Parameters 2 von 'const char [46]' in 'LPCWSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>.\main.cpp(128) : error C2664: 'RegSetValueExW': Konvertierung des Parameters 2 von 'const char [23]' in 'LPCWSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>.\main.cpp(132) : error C2664: 'GetUserNameW': Konvertierung des Parameters 1 von 'char [255]' in 'LPWSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>.\main.cpp(134) : error C2664: 'GetDateFormatW': Konvertierung des Parameters 4 von 'const char [16]' in 'LPCWSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>.\main.cpp(135) : error C2664: 'lstrcpyW': Konvertierung des Parameters 1 von 'char [16]' in 'LPWSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>.\main.cpp(136) : error C2664: 'GetTimeFormatW': Konvertierung des Parameters 4 von 'const char [9]' in 'LPCWSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>.\main.cpp(137) : error C2664: 'lstrcpyW': Konvertierung des Parameters 1 von 'char [16]' in 'LPWSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>.\main.cpp(185) : error C2679: Binärer Operator '=': Es konnte kein Operator gefunden werden, der einen rechtsseitigen Operanden vom Typ 'TCHAR [255]' akzeptiert (oder keine geeignete Konvertierung möglich)
1> C:\Program Files\Microsoft Visual Studio 9.0\VC\include\xstring(914): kann 'std::basic_string<_Elem,_Traits,_Ax> &std::basic_string<_Elem,_Traits,_Ax>::operator =(const std::basic_string<_Elem,_Traits,_Ax> &)' sein
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>,
1> _Ax=std::allocator<char>
1> ]
1> C:\Program Files\Microsoft Visual Studio 9.0\VC\include\xstring(919): oder "std::basic_string<_Elem,_Traits,_Ax> &std::basic_string<_Elem,_Traits,_Ax>::operator =(const _Elem *)"
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>,
1> _Ax=std::allocator<char>
1> ]
1> C:\Program Files\Microsoft Visual Studio 9.0\VC\include\xstring(924): oder "std::basic_string<_Elem,_Traits,_Ax> &std::basic_string<_Elem,_Traits,_Ax>::operator =(_Elem)"
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>,
1> _Ax=std::allocator<char>
1> ]
1> bei Anpassung der Argumentliste '(std::string, TCHAR [255])'ich habe keine verdammte ahnung -.-
-
Dann stelle dein Projekt auch für den Release Mode auf Multi Byte Charset um.
Simon
-
hab ich... jetzt kommen diese fehler
1>------ Erstellen gestartet: Projekt: spchost IDLE, Konfiguration: Release Win32 ------
1>Kompilieren...
1>main.cpp
1>Verknüpfen...
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: __thiscall CkString::operator char const *(void)" (??BCkString@@QAEPBDXZ)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: class CkString & __thiscall CkString::operator=(char const *)" (??4CkString@@QAEAAV0@PBD@Z)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual __thiscall CkString::~CkString(void)" (??1CkString@@UAE@XZ)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: __thiscall CkString::CkString(void)" (??0CkString@@QAE@XZ)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: void __thiscall CkFtp2::put_Hostname(char const *)" (?put_Hostname@CkFtp2@@QAEXPBD@Z)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: void __thiscall CkFtp2::put_Username(char const *)" (?put_Username@CkFtp2@@QAEXPBD@Z)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: void __thiscall CkFtp2::put_Password(char const *)" (?put_Password@CkFtp2@@QAEXPBD@Z)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: bool __thiscall CkFtp2::ChangeRemoteDir(char const *)" (?ChangeRemoteDir@CkFtp2@@QAE_NPBD@Z)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: bool __thiscall CkFtp2::Connect(void)" (?Connect@CkFtp2@@QAE_NXZ)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: bool __thiscall CkFtp2::Disconnect(void)" (?Disconnect@CkFtp2@@QAE_NXZ)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: bool __thiscall CkFtp2::PutFile(char const *,char const *)" (?PutFile@CkFtp2@@QAE_NPBD0@Z)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: bool __thiscall CkFtp2::UnlockComponent(char const *)" (?UnlockComponent@CkFtp2@@QAE_NPBD@Z)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual __thiscall CkFtp2::~CkFtp2(void)" (??1CkFtp2@@UAE@XZ)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: __thiscall CkFtp2::CkFtp2(void)" (??0CkFtp2@@QAE@XZ)".
1>D:\Programmieren\C++\spchost IDLE msvc++\spchost IDLE\Release\spchost IDLE.exe : fatal error LNK1120: 14 nicht aufgelöste externe Verweise.ich habe die libs von ChilkatVC9 mit reingepackt weil ich dateien auf meinen ftp server loaden muss. kennste dich da auch aus?
*EDIT*
sry, hab vergessen die lib zu linken :D:D danke für eure hilfe
es geeeht
-
Du musst auch alle Libs bei den Linker Settings eintragen, so wie bei Debug.
Simon
-
okay der release klappt zwar, aber auf meiner vm kann ich das programm noch immer nicht starten:
Diese Anwendung konnte nicht gestartet werden, weil die Anwendungskonfiguration nicht korrekt ist. Zur Problembehandlung sollten Sie die Anwendung neu installieren.
wieso gehts immer noch nicht?
-
runtimes und frameworks installiert?
-
also es wär schon cool, wenn mein programm auf jeden pc direkt laufen würde...
sons kann ich ja gleich mit vb programmieren, wenn ich noch runtime und und (vorallem) frameworks installieren muss ^^
ich dachte c++ läuft auf jedem pc direkt
meine anderen programme (ohne libs) lassen sich auch ohne probleme auf anderen pcs starten
-
Dein Programm ausführen ohne vorher etwas installieren zu müssen geht nur wenn die Runtime statisch gelinkt ist und kein .NET dabei ist.
Bei C++/CLI kann allerdings (AFAIK) die Runtime nicht statisch gelinkt werden.
C++/CLI ist NICHT C++.Mach doch ein Setup.
Simon
-
ah okay, danke für den hinweis.
werden beim kompilieren nicht die libs im programm mit kompiliert?
oder kann ich das iwie mit dev-c++ besser machen?
die lib ist doch nichts anderes als eine bibliothek von funktionen, oder?
kann ich die lib iwie dekompilieren und die funktionen in die main.cpp schreiben?
-
Finde heraus, ob dein Code das .NET Framework benötigt (durch Klassen aus dem .NET Framework oder der C++/CLI Syntax). Wenn ja, entweder auf native umschreiben oder dich damit abfinden, dass das .NET Framework installiert sein muss um dein App. laufen zu lassen. Wenn nicht: C++ Runtime statisch dazulinken, et voila...
Du hast ins C++/CLI Forum gepostet, ich bin mir aber nicht sicher (und Du anscheinend auch nicht) ob Du wirklich C++/CLI programmierst.
oder kann ich das iwie mit dev-c++ besser machen?
Nein, mit dev c++ geht nicht besser. MSVC ist dafür gut geeignet.
werden beim kompilieren nicht die libs im programm mit kompiliert?
Nur Header- Only Libraries (Source Code) werden mitkompiliert. Der Rest der Libraries wird gelinkt (früher oder später). Kommt also auf deine Library an. DLL, LIB, etc.
kann ich die lib iwie dekompilieren und die funktionen in die main.cpp schreiben?
Nein.
die lib ist doch nichts anderes als eine bibliothek von funktionen, oder?
Kann sein, muss nicht. Es gibt auf COM Dlls oder .NET Assemblies. Und und und..
Simon
-
hmm und wie kann ich die runtime statisch dazu linken?
oder kannste mir sonst noch nen tipp geben?