Komisches Verhalten bei Portierung auf andere Rechner

allem77

Grünschnabel
Hallo zusammen,

Ich habe eine SW mit MS Visual Studio 2008 Pro geschrieben. Diese funktionniert (Release Mode) auf meinem Rechner und Rechner die exact das gleiche Betriebssytem und Service Pack haben (Windows XP SP3). Wenn ich die SW installiere auf Windows Vista oder sogar Windows XP mit SP1 dann passiert folgendes:

Meine Applikation startet mit einem "Disclaimer" -Fenster (d.h. ein Formview mit einem Listbox mit Text, ein "OK" und ein "Ablehnen" Button). Kommischerweise funktioniert diese Anzeige auf alle Rechner! Wenn ich aber auf "OK" drücke, erscheint dann nicht mehr das erwartete Dialogfenster. Das Prozess ist dann nicht mehr zu sehen unter dem TaskManager. WindosXP SP1 sag nichts weiteres und Vista meldet folgendes:

IMU_CONFIG funktioniert nicht mehr. Das Programm wird aufgrund eines Problems nicht richtig ausgeführt. Das Programm wird geschlossen und Sie werden benachrichtigt, wenn eine Lösung verfügbar ist.

Jetzt mehr Details zu meiner SW:
=========================
- Nutzung von MFC
- Portierung auf andere Rechner dank einem Setup Programm
- Projekt Eigenschaften:
* Allgemein / Verwendung von MFC: MFC in einer Statischen Bibliothek verwenden
* C/C++ / Codegenerierung / Laufzeitbibliothek: Multithreaded (/MT)
* C/C++ / Optimierung/ Optimierung: keine Optimierung
- Im setup Projekt include von:
* Microsoft_VC90_CRT_x86.msm + policy
* Microsoft_VC90_MFC_x86.msm + policy

Vielen Dank für jede Hilfe!
Gruß,
Allem.

Ich habe noch was probiert:

Ich habe alle Merge Modul in meiner Setup Datei integriert. Das hilft nichts. Ich habe dann das Dependency Walker auf dem Zielrechner laufen lassen. Das Protokoll steht hier unten. 4 dll machen ein Problem:
- IMU_CONFIGDEU.DLL (Datei nicht gefunden) (meine SW heißt IMU_CONFIG)
- IMU_CONFIGLOC.DLL (Datei nicht gefunden)
- SHLWAPI.DLL
- IEFRAME.DLL


Resultat von Dependency Walker:
==========================

Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.

--------------------------------------------------------------------------------
Starting profile on 13.10.2009 at 17:24:48

Operating System: Microsoft Windows Vista Business (32-bit), version 6.00.6001 Service Pack 1
Program Executable: c:\program files\explinovo\imu config\IMU_CONFIG.EXE
Program Arguments:
Starting Directory: C:\Program Files\Explinovo\IMU Config\
Search Path: C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\ATI Technologies\ATI.ACE\Core-Static;c:\Program Files\Common Files\Lenovo;C:\Program Files\Common Files\Roxio Shared\10.0\DLLShared\;C:\Program Files\Common Files\Roxio Shared\DLLShared\;C:\Program Files\Common Files\Roxio Shared\DLLShared\;C:\Program Files\Common Files\Roxio Shared\10.0\DLLShared\;C:\Program Files\ThinkPad\ConnectUtilities\;C:\Program Files\Lenovo\Client Security Solution;c:\Program Files\Microsoft SQL Server\90\Tools\binn\

Options Selected:
Simulate ShellExecute by inserting any App Paths directories into the PATH environment variable.
Log DllMain calls for process attach and process detach messages.
Hook the process to gather more detailed dependency information.
Log LoadLibrary function calls.
Log GetProcAddress function calls.
Log debug output messages.
Automatically open and profile child processes.
--------------------------------------------------------------------------------

Started "IMU_CONFIG.EXE" (process 0x10CC) at address 0x003C0000. Successfully hooked module.
Loaded "NTDLL.DLL" at address 0x778E0000. Successfully hooked module.
Loaded "KERNEL32.DLL" at address 0x77610000. Successfully hooked module.
DllMain(0x77610000, DLL_PROCESS_ATTACH, 0x00000000) in "KERNEL32.DLL" called.
...
GetProcAddress(0x77610000 [KERNEL32.DLL], "ActivateActCtx") called from "IMU_CONFIG.EXE" at address 0x003DB9A7 and returned 0x7762D013.
GetProcAddress(0x77610000 [KERNEL32.DLL], "DeactivateActCtx") called from "IMU_CONFIG.EXE" at address 0x003DB9B4 and returned 0x7762D044.
LoadLibraryW("c:\program files\explinovo\imu config\IMU_CONFIGDEU.dll") called from "IMU_CONFIG.EXE" at address 0x003DBEAE.
LoadLibraryW("c:\program files\explinovo\imu config\IMU_CONFIGDEU.dll") returned NULL. Error: Das angegebene Modul wurde nicht gefunden (126).
LoadLibraryW("c:\program files\explinovo\imu config\IMU_CONFIGDEU.dll") called from "IMU_CONFIG.EXE" at address 0x003DBEAE.
LoadLibraryW("c:\program files\explinovo\imu config\IMU_CONFIGDEU.dll") returned NULL. Error: Das angegebene Modul wurde nicht gefunden (126).
LoadLibraryW("c:\program files\explinovo\imu config\IMU_CONFIGDEU.dll") called from "IMU_CONFIG.EXE" at address 0x003DBEAE.
LoadLibraryW("c:\program files\explinovo\imu config\IMU_CONFIGDEU.dll") returned NULL. Error: Das angegebene Modul wurde nicht gefunden (126).
LoadLibraryW("c:\program files\explinovo\imu config\IMU_CONFIGDEU.dll") called from "IMU_CONFIG.EXE" at address 0x003DBEAE.
LoadLibraryW("c:\program files\explinovo\imu config\IMU_CONFIGDEU.dll") returned NULL. Error: Das angegebene Modul wurde nicht gefunden (126).
LoadLibraryW("c:\program files\explinovo\imu config\IMU_CONFIGLOC.dll") called from "IMU_CONFIG.EXE" at address 0x003DBEAE.
LoadLibraryW("c:\program files\explinovo\imu config\IMU_CONFIGLOC.dll") returned NULL. Error: Das angegebene Modul wurde nicht gefunden (126).
GetProcAddress(0x74FE0000 [COMCTL32.DLL], "InitCommonControlsEx") called from "IMU_CONFIG.EXE" at address 0x003D3502 and returned 0x75001322.
GetProcAddress(0x766E0000 [SHELL32.DLL], "InitNetworkAddressControl") called from "IMU_CONFIG.EXE" at address 0x003D35DC and returned 0x7671D72B.
LoadLibraryW("comctl32.dll") called from "USER32.DLL" at address 0x7784B306.
LoadLibraryW("comctl32.dll") returned 0x74FE0000.
GetProcAddress(0x74FE0000 [COMCTL32.DLL], "RegisterClassNameW") called from "USER32.DLL" at address 0x7784B31E and returned 0x74FFC18B.
...
GetProcAddress(0x74FE0000 [COMCTL32.DLL], "RegisterClassNameW") called from "USER32.DLL" at address 0x7784B31E and returned 0x74FFC18B.
GetProcAddress(0x74D60000 [UXTHEME.DLL], "GetThemeFont") called from "COMCTL32.DLL" at address 0x74FFFFB8 and returned 0x74D6D516.
GetProcAddress(0x74D60000 [UXTHEME.DLL], "GetThemeColor") called from "COMCTL32.DLL" at address 0x74FFFFB8 and returned 0x74D691C4.
Second chance exception 0xC00000FD (Stack Overflow) occurred in "IMU_CONFIG.EXE" at address 0x003EF7E0.
Exited "IMU_CONFIG.EXE" (process 0x10CC) with code -1073741571 (0xC00000FD).


In meiner SW verwende ich einen Reiterelement. Ich habe ihn rauskommentiert und dann kam einen anderen Fehler auf dem Zielrechner:

"Diese Anwendung konnte nicht gestartet werden, da die Side-by-Side-Konfiguration ungültig ist. Weitere Informationen finden sie im Anwendungsereignisprotokoll"

Ich habe darüber gegoogle und gefunden, dass wenn das passiert sollte man die MFC Bibliothek statisch verbinden und nicht über dll. Das ist aber schon der Fall bei mir.... hmm.

Hat jemand eine Idee?

Gruß,

Allem.
 
Zuletzt bearbeitet:

allem77

Grünschnabel
So ich habe weiter gesucht und weiß jetzt was bringt das Abstürzen von der SW. Ich konnte dennoch das Problem nicht lösen. Vielleicht kann mir jetzt jemand helfen.

Ich habe einen TabCtrl Element mit 5 Dialog Klasse als Ansicht. Bei ausrufen von

MyCEditElementCtrl.SetWindowsTextW(_T("1"));

stürzt die SW auf einem fremden Rechner (nicht auf meinem Entwicklungsrechner). Wenn ich eine CString Variable mit meinem CEdit Element verknüpfe, einen Text in der Variable reinschreibe und UpdateData(false) ausrufe, funktioniert es! Aber... Ich nutze ein Helper.cpp File mit allgemeinen Funktionen, um in ein CEdit Box zu schreiben/lesen. Dieses File nicht mehr zu nützen bedeutet ein riesigen Aufwand an Änderungen! Es muss irgendwo eine Option geben, damit dieses SetWindowsText auf alle Rechner funktioniert.

Vielen Dank für Ihre Hilfe!
 

Neue Beiträge