Hi, Ich habe hier ein Programm geschrieben, was ich auf beliebige Rechner distributieren können möchte. Ich versuche gerade die nötigen dlls ausfindig zu machen und dazuzupacken, aber es will nicht gelingen. der Dependecy Walker hat abhängigkeiten zur msvcXT90.dll logisch. (c:\windows\winsxs\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.616 1_x-ww_31a54e43\MSVCP90.DLL) kopiere ich aber nun genau diese dlls aus dem angezeigten Pfad, nimmt windows trotzdem nicht vorrangig die lokale dll. Und auf einem anderen Rechner ohne VS2009 oder installierte Redists will es auch nicht. die redists will ich nicht extra dazupacken. statisch linken, ist keine Option, da unter anderem auch die QT-dll eingebunden wird, die wiederum die selben msvc-dlls braucht. Und den Spaß, QT unter Windows in eine statische Lib zu übersetzen will ich mir ersparen. Ich vermute das Problem hat irgend was mit den Manifesten zu tun, davon habe ich aber überhaupt keine Ahnung Hat jemand einen Tip für mich? Gruß Vlad
unter welchem namen hast du die dll abgelegt? Hatte bis jetzt noch nie probleme bei meinen Anwendungen. Habe aber auch noch nie QT verwendet. Warum ist es denn ein Problem wenn windows eine andere DLL Verwendet, wie sie die gleichen name und damit die gleiche Version ist, dann ist doch alles ok. Schlimm ist nur wenn er keine dll findet.
Peter II schrieb: > Schlimm ist nur wenn er keine dll findet. genau das passiert ja, obwohl ich genau die dlls, die win auf dem einen Rechner verwendet auf den anderen kopiert habe
Vlad Tepesch schrieb: > genau das passiert ja, obwohl ich genau die dlls, die win auf dem einen > Rechner verwendet auf den anderen kopiert habe hast du alle ewischt? ms*90*.dll
>c:\windows\winsxs\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.616
1_x-ww_31a54e43\MSVCP90.DLL
Das ist die Runtime (bzw. ein Teil davon) von Visual Studio
zwotausendirgendwas. Nimm das passende Redistributable (entweder direkt
von M$ oder aus dem Installationsverzeichnis von Visual Studio) und gut
iss.
g457 schrieb: >>c:\windows\winsxs\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.61 61_x-ww_31a54e43\MSVCP90.DLL > > Das ist die Runtime das weiß ich doch > Nimm das passende Redistributable (entweder direkt > von M$ oder aus dem Installationsverzeichnis von Visual Studio) und gut > iss. genau das will ich ja vermeiden, dass extra noch etwas installiert werden muss. und wenn ich die Runtime-dlls aus dem studio\VC\redist\x86\Microsoft.VC90.CRT kopiere, dann nimmt er sie ja trotzdem nicht.
Vlad Tepesch schrieb: > und wenn ich die Runtime-dlls aus dem > studio\VC\redist\x86\Microsoft.VC90.CRT kopiere, dann nimmt er sie ja > trotzdem nicht. dann nimm sie mal aus system32
Vlad Tepesch schrieb: >> Nimm das passende Redistributable (entweder direkt >> von M$ oder aus dem Installationsverzeichnis von Visual Studio) und gut >> iss. > genau das will ich ja vermeiden, dass extra noch etwas installiert > werden muss. und wenn ich die Runtime-dlls aus dem > studio\VC\redist\x86\Microsoft.VC90.CRT kopiere, dann nimmt er sie ja > trotzdem nicht. Falls ein "Redirection file" (appName.exe.local, Inhalt egal) vorhanden ist, wird zuerst im Verzeichnis der Anwendung gesucht, danach in der normalen Suchreihenfolge. Ausnahme: Known DLLs zu denen MSVCRT gehört, wenn das mal installiert wurde... http://msdn.microsoft.com/en-us/library/windows/desktop/ms682600(v=vs.85).aspx bzw. http://msdn.microsoft.com/en-us/library/ms682600(VS.85).aspx Man sollte aber gut überlegen, ob man etwas dagegen macht (kritische Fehler in den DLLs, Updates etc.)
Es reicht schon länger nicht mehr, die DLLs einfach in den lokalen Pfad zu kopieren. Könnte weiterhelfen: http://www.codeproject.com/Articles/19155/Create-projects-easily-with-private-MFC-ATL-and-CR http://blog.kalmbach-software.de/2008/05/03/howto-deploy-vc2008-apps-without-installing-vcredist_x86exe/
bat out of hell schrieb: > Es reicht schon länger nicht mehr, die DLLs einfach in den lokalen Pfad > zu kopieren. ich habe es nur mal kurz überflogen, dort geht es um diese Manifest dateien, diese sind aber meines wissens in 9er version schon nicht mehr da. Ich hatte bis jetzt keine Probleme beim kopieren der dlls, hatte aber bis jetzt auch kein ATL oder MFC verwendet.
Wenn Du die redist wirklich nicht nehmen willst dann besteht noch die Möglichkeit, mit Visual Studio einen Installer zu bauen, der dann die DLLs mit einpackt.
hmm ich hab das mir auf dem testsystem (Internet Explorer Application Compatibility VPC Image http://www.microsoft.com/download/en/details.aspx?id=11575) noch mal genau mit dem Dependency Walker angeschaut. Er scheint die kopierten Dlls zu nehmen - zumindest zeigt er bei diesen keinen Fehler an. Error: The Side-by-Side configuration information for "...\QTCORE4.DLL" contains errors. This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem (14001). Warning: At least one delay-load dependency module was not found. Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module. Er meckert über side-by-side configurationsfehler für die qt dll. die benötigten module für diese dll sehen aber ok aus nur bei zwei verzögert zu ladenen modulen meckert er: MSJAVA.DLL MPR.DLL das ist aber üblich und kann normalerweise ignoriert werden, die abhängigkeiten stecken tief in den windows-eigenen modulen und treten bei jedem Programm auf.
nachdem ich irgendwo die worte .net 3.5 und qt im Zusammenhang hab stehen sehen, hab ich testweise mal das Framework installiert siehe da, der Fehler ist weg. Obwohl qt keine der .net-dlls einbindet. Es scheint, dass die .net irgend eine System-DLL updated, womit deren Schnittstelle wieder mit der übereinstimmt, die qt erwartet. komisch, komisch.
Peter II schrieb: > kann es sein das du c++.net programierst und nicht c/c++? definitv nicht > blöde frage stimmt ;)
Weißt du überhaupt, wo Du da reinlangst? g https://en.wikipedia.org/wiki/Side-by-side_assembly Es ist äußerst ungezogen, DLLs einer Runtime einfach so irgendwohin zu klatschen. Was passiert, wenn eine Sicherheitslücke oder sonstige Fehler mittels Patch geschlossen werden? Deine App funktioniert evtl. nach einem Update dann gar nicht mehr oder schlimmeres. Mach es wie jeder andere auch, installier die passende Redistributable..
Salat schrieb: > Weißt du überhaupt, wo Du da reinlangst? g > https://en.wikipedia.org/wiki/Side-by-side_assembly hast du dir es mal duchgelesen? [...] However, runtime libraries in Visual C++ 2010 no longer use this technology; [...]
Seh ich auch so. Ich schreibe ja auch keine Applikation für Win7 und pack dei Dll des .Net framework 4.0 dazu nur weil ich das auf nen XP rechner nicht installieren will. Das sind system dll's und die müssen halt installiert sein Punkt.
Salat schrieb: > Mach es wie jeder andere auch, installier die passende Redistributable.. ...oder alternativ statisch linken sofern möglich ;D
Ich denke auch, du hast nur zwei Möglichkeiten: - Alles statisch linken - Oder Redistributable mitliefern Das was du bislang versuchst ist eine sehr unsaubere Lösung.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.