# Button funktioniert im release Modus nicht



## CKS07 (26. Januar 2009)

Guten Abend,

also ich habe folgendes Problem:

Ich habe ein Programme in C++ (Windows Forms) geschrieben und es funktionier auch alles perfekt...

nun wollte ich nach Release umstellen damit man es auch von anderen PC öffnen kann...das Programm startet problemlos...aber man kann klicken was man will, es läuft nicht...normalerweise klickt man auf den Start Button und es fängt an...aber nun nicht...

Achso vielleicht ist es wichtig...ich habe ein Verweis zum Projekt hinzugefügt und zwar die ChilkatDotNet2.dll !
Gruß CKS


----------



## deepthroat (26. Januar 2009)

Hi.

Ich nehme an, du hast eine gültige Lizenz?

Gruß


----------



## CKS07 (26. Januar 2009)

Ja...bzw. daran liegt es sicher net!


----------



## deepthroat (27. Januar 2009)

CKS07 hat gesagt.:


> Ja...bzw. daran liegt es sicher net!


Es gibt allerdings auch keinen vernünftigen Grund warum das Programmm nicht das tun sollte, was es im Debug Modus auch tut.

Mach mal ein paar MessageBox-Aufrufe in die Event-Handler usw. damit du sehen kannst wo es hakt.

Ansonsten, zeig mal den Code.

Gruß


----------



## CKS07 (27. Januar 2009)

es hackt schon allgemein...er nimmt schon gar nicht den button an...

also wenn über visual studios das release starte geht es...aber wenn ich dann so die *.exe öffne geht es leider nicht


----------



## CKS07 (27. Januar 2009)

vielleicht hilft euch ja die ausgabe...


```
------ Neues Erstellen gestartet: Projekt: windows1, Konfiguration: Release Win32 ------
Die Zwischen- und Ausgabedateien für das Projekt "windows1" mit der Konfiguration "Release|Win32" werden gelöscht.
Kopieren von "c:\Programme\Chilkat Software Inc\Chilkat.NET-v2.0-Framework\ChilkatDotNet2.dll" in das Zielverzeichnis...
Kompilieren...
stdafx.cpp
Kompilieren...
windows1.cpp
C:\Programme\Microsoft Visual Studio 9.0\VC\include\windows.h(8284) : warning C4005: 'WTS_CONSOLE_CONNECT': Makro-Neudefinition
        C:\Programme\Microsoft Visual Studio 9.0\VC\include\windows.h(7550): Siehe vorherige Definition von 'WTS_CONSOLE_CONNECT'
C:\Programme\Microsoft Visual Studio 9.0\VC\include\windows.h(8285) : warning C4005: 'WTS_CONSOLE_DISCONNECT': Makro-Neudefinition
        C:\Programme\Microsoft Visual Studio 9.0\VC\include\windows.h(7551): Siehe vorherige Definition von 'WTS_CONSOLE_DISCONNECT'
C:\Programme\Microsoft Visual Studio 9.0\VC\include\windows.h(8286) : warning C4005: 'WTS_REMOTE_CONNECT': Makro-Neudefinition
        C:\Programme\Microsoft Visual Studio 9.0\VC\include\windows.h(7552): Siehe vorherige Definition von 'WTS_REMOTE_CONNECT'
C:\Programme\Microsoft Visual Studio 9.0\VC\include\windows.h(8287) : warning C4005: 'WTS_REMOTE_DISCONNECT': Makro-Neudefinition
        C:\Programme\Microsoft Visual Studio 9.0\VC\include\windows.h(7553): Siehe vorherige Definition von 'WTS_REMOTE_DISCONNECT'
C:\Programme\Microsoft Visual Studio 9.0\VC\include\windows.h(8288) : warning C4005: 'WTS_SESSION_LOGON': Makro-Neudefinition
        C:\Programme\Microsoft Visual Studio 9.0\VC\include\windows.h(7554): Siehe vorherige Definition von 'WTS_SESSION_LOGON'
C:\Programme\Microsoft Visual Studio 9.0\VC\include\windows.h(8289) : warning C4005: 'WTS_SESSION_LOGOFF': Makro-Neudefinition
        C:\Programme\Microsoft Visual Studio 9.0\VC\include\windows.h(7555): Siehe vorherige Definition von 'WTS_SESSION_LOGOFF'
C:\Programme\Microsoft Visual Studio 9.0\VC\include\windows.h(8290) : warning C4005: 'WTS_SESSION_LOCK': Makro-Neudefinition
        C:\Programme\Microsoft Visual Studio 9.0\VC\include\windows.h(7556): Siehe vorherige Definition von 'WTS_SESSION_LOCK'
C:\Programme\Microsoft Visual Studio 9.0\VC\include\windows.h(8291) : warning C4005: 'WTS_SESSION_UNLOCK': Makro-Neudefinition
        C:\Programme\Microsoft Visual Studio 9.0\VC\include\windows.h(7557): Siehe vorherige Definition von 'WTS_SESSION_UNLOCK'
c:\projekte\windows1\windows1\Form1.h(561) : warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
        C:\Programme\Microsoft Visual Studio 9.0\VC\include\stdio.h(366): Siehe Deklaration von 'sprintf'
c:\projekte\windows1\windows1\Form1.h(573) : warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
        C:\Programme\Microsoft Visual Studio 9.0\VC\include\string.h(79): Siehe Deklaration von 'strcat'
c:\projekte\windows1\windows1\Form1.h(576) : warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
        C:\Programme\Microsoft Visual Studio 9.0\VC\include\string.h(74): Siehe Deklaration von 'strcpy'
c:\projekte\windows1\windows1\Form1.h(577) : warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
        C:\Programme\Microsoft Visual Studio 9.0\VC\include\string.h(74): Siehe Deklaration von 'strcpy'
c:\projekte\windows1\windows1\Form1.h(578) : warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
        C:\Programme\Microsoft Visual Studio 9.0\VC\include\string.h(79): Siehe Deklaration von 'strcat'
c:\projekte\windows1\windows1\Form1.h(579) : warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
        C:\Programme\Microsoft Visual Studio 9.0\VC\include\string.h(74): Siehe Deklaration von 'strcpy'
AssemblyInfo.cpp
Verwaltete Ressourcen werden kompiliert...
Liest in den 0-Ressourcen von "c:\Projekte\windows1\windows1\Form1.resX".
Ressourcendatei wird geschrieben...  Fertig.
Ressourcen werden kompiliert...
Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1
Copyright (C) Microsoft Corporation.  All rights reserved.
Verknüpfen...
Code wird generiert.
c:\projekte\windows1\windows1\form1.h(598) : warning C4700: Die nicht initialisierte lokale Variable "test" wurde verwendet.
Codegenerierung ist abgeschlossen.
Das Manifest wird eingebettet...
Zwischenspeichern der Metadateninformationen für "c:\programme\chilkat software inc\chilkat.net-v2.0-framework\chilkatdotnet2.dll"...
Das Buildprotokoll wurde unter "file://c:\Projekte\windows1\windows1\Release\BuildLog.htm" gespeichert.
windows1 - 0 Fehler, 15 Warnung(en)
========== Alles neu erstellen: 1 erfolgreich, Fehler bei 0, 0 übersprungen ==========
```


----------



## deepthroat (27. Januar 2009)

CKS07 hat gesagt.:


> vielleicht hilft euch ja die ausgabe...


Nein, die Ausgabe hilft gar nichts. Das Build Protokoll wäre schon interessanter. Brauchst du denn die windows.h Headerdatei überhaupt?

Gruß

\edit: Du solltest allerdings mal da nachschauen:


> c:\projekte\windows1\windows1\form1.h(598)


----------



## CKS07 (27. Januar 2009)

Ja hast recht die brauche ich nicht...

so hier das Build Protokoll:


```
Befehlszeilen
 	 	

Kopieren von "c:\Programme\Chilkat Software Inc\Chilkat.NET-v2.0-Framework\ChilkatDotNet2.dll" in das Zielverzeichnis...
Die temporäre Datei "c:\Projekte\windows1\windows1\Release\RSP00002E26282232.rsp" wird erstellt. Inhalt:
[
/GL /D "WIN32" /D "NDEBUG" /D "_UNICODE" /D "UNICODE" /FD /EHa /MD /Yu"stdafx.h" /Fp"Release\windows1.pch" /Fo"Release\\" /Fd"Release\vc90.pdb" /W3 /c /Zi /clr:pure /TP /FU "c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll" /FU "c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Data.dll" /FU "c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll" /FU "c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll" /FU "c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.XML.dll" /FU "c:\Programme\Chilkat Software Inc\Chilkat.NET-v2.0-Framework\ChilkatDotNet2.dll"

.\windows1.cpp

.\AssemblyInfo.cpp
]Erstellen der Befehlszeile "cl.exe @c:\Projekte\windows1\windows1\Release\RSP00002E26282232.rsp /nologo /errorReport:prompt"Die temporäre Datei "c:\Projekte\windows1\windows1\Release\RSP00002F26282232.rsp" wird erstellt. Inhalt:
[
/GL /D "WIN32" /D "NDEBUG" /D "_UNICODE" /D "UNICODE" /FD /EHa /MD /Yc"stdafx.h" /Fp"Release\windows1.pch" /Fo"Release\\" /Fd"Release\vc90.pdb" /W3 /c /Zi /clr:pure /TP /FU "c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll" /FU "c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Data.dll" /FU "c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll" /FU "c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll" /FU "c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.XML.dll" /FU "c:\Programme\Chilkat Software Inc\Chilkat.NET-v2.0-Framework\ChilkatDotNet2.dll"

.\stdafx.cpp
]Erstellen der Befehlszeile "cl.exe @c:\Projekte\windows1\windows1\Release\RSP00002F26282232.rsp /nologo /errorReport:prompt"Erstellen der Befehlszeile "resgen.exe /useSourcePath /compile "c:\Projekte\windows1\windows1\Form1.resX","Release\windows1.Form1.resources""Erstellen der Befehlszeile "rc.exe /d "_UNICODE" /d "UNICODE" /fo"Release/app.res" .\app.rc"Die temporäre Datei "c:\Projekte\windows1\windows1\Release\RSP00003026282232.rsp" wird erstellt. Inhalt:
[
/OUT:"C:\Projekte\windows1\Release\windows1.exe" /INCREMENTAL:NO /MANIFEST /MANIFESTFILE:"Release\windows1.exe.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"C:\Projekte\windows1\Release\windows1.pdb" /SUBSYSTEM:WINDOWS /LTCG /ENTRY:"main" /DYNAMICBASE /FIXED:No /NXCOMPAT /MACHINE:X86  /ASSEMBLYRESOURCE:.\Release\windows1.Form1.resources

".\Release\AssemblyInfo.obj"

".\Release\stdafx.obj"

".\Release\windows1.obj"

".\Release\app.res"
]Erstellen der Befehlszeile "link.exe @c:\Projekte\windows1\windows1\Release\RSP00003026282232.rsp /NOLOGO /ERRORREPORT:PROMPT"Die temporäre Datei "c:\Projekte\windows1\windows1\Release\RSP00003126282232.rsp" wird erstellt. Inhalt:
[
/outputresource:"..\Release\windows1.exe;#1" /manifest

.\Release\windows1.exe.intermediate.manifest
]Erstellen der Befehlszeile "mt.exe @c:\Projekte\windows1\windows1\Release\RSP00003126282232.rsp /nologo"Die temporäre Datei "c:\Projekte\windows1\windows1\Release\BAT00003226282232.bat" wird erstellt. Inhalt:
[
@echo, die Manifestressource wurde zuletzt um %TIME% am %DATE% aktualisiert > .\Release\mt.dep
]Erstellen der Befehlszeile "c:\Projekte\windows1\windows1\Release\BAT00003226282232.bat"

Ausgabefenster
 	 	

Kompilieren...
stdafx.cpp
Kompilieren...
windows1.cpp
c:\projekte\windows1\windows1\Form1.h(561) : warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
        C:\Programme\Microsoft Visual Studio 9.0\VC\include\stdio.h(366): Siehe Deklaration von 'sprintf'
c:\projekte\windows1\windows1\Form1.h(573) : warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
        C:\Programme\Microsoft Visual Studio 9.0\VC\include\string.h(79): Siehe Deklaration von 'strcat'
c:\projekte\windows1\windows1\Form1.h(576) : warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
        C:\Programme\Microsoft Visual Studio 9.0\VC\include\string.h(74): Siehe Deklaration von 'strcpy'
c:\projekte\windows1\windows1\Form1.h(577) : warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
        C:\Programme\Microsoft Visual Studio 9.0\VC\include\string.h(74): Siehe Deklaration von 'strcpy'
c:\projekte\windows1\windows1\Form1.h(578) : warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
        C:\Programme\Microsoft Visual Studio 9.0\VC\include\string.h(79): Siehe Deklaration von 'strcat'
c:\projekte\windows1\windows1\Form1.h(579) : warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
        C:\Programme\Microsoft Visual Studio 9.0\VC\include\string.h(74): Siehe Deklaration von 'strcpy'
AssemblyInfo.cpp
Verwaltete Ressourcen werden kompiliert...
Liest in den 0-Ressourcen von "c:\Projekte\windows1\windows1\Form1.resX".
Ressourcendatei wird geschrieben...  Fertig.
Ressourcen werden kompiliert...
Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1
Copyright (C) Microsoft Corporation.  All rights reserved.
Verknüpfen...
Code wird generiert.
c:\projekte\windows1\windows1\form1.h(598) : warning C4700: Die nicht initialisierte lokale Variable "test" wurde verwendet.
Codegenerierung ist abgeschlossen.
Das Manifest wird eingebettet...
Zwischenspeichern der Metadateninformationen für "c:\programme\chilkat software inc\chilkat.net-v2.0-framework\chilkatdotnet2.dll"...

Ergebnisse
 	 	

Das Buildprotokoll wurde unter "file://c:\Projekte\windows1\windows1\Release\BuildLog.htm" gespeichert.
windows1 - 0 Fehler, 7 Warnung(en)
```


----------



## deepthroat (27. Januar 2009)

Nee, das sieht alles normal aus - bis auf die unschöne Warnung C4700.

Da mußt du wohl mit dem Poor-Man-Debugging ran...

Gruß


----------



## CKS07 (27. Januar 2009)

Ah okay und was ist bzw. heißt Poor-Man-Debugging (armer man debugging)? eine alternative zum release modus?

Gruß


----------



## deepthroat (27. Januar 2009)

CKS07 hat gesagt.:


> Ah okay und was ist bzw. heißt Poor-Man-Debugging (armer man debugging)? eine alternative zum release modus?


Nein, da du im Release Modus keine Debugging Informationen hast und somit der Debugger nutzlos ist, mußt du wie ich vorhin sagte entweder Statusmeldungen und Variableninhalte mit MessageBox ausgeben oder in eine Datei schreiben (wenn es evtl. Race-Conditions gibt) damit du einfach siehst was der Code macht.

Gruß


----------



## CKS07 (27. Januar 2009)

hmm okay weiß jetzt gar nicht wie ich da jetzt ran gehen soll...hmm hab jetzt kein bock das ganze programm nochmal auseinander zu nehmen


----------



## deepthroat (27. Januar 2009)

CKS07 hat gesagt.:


> hmm okay weiß jetzt gar nicht wie ich da jetzt ran gehen soll...hmm hab jetzt kein bock das ganze programm nochmal auseinander zu nehmen


Dann mußt du's so lassen und die Debug Version ausliefern.

Gruß


----------



## CKS07 (27. Januar 2009)

Ja das hatte ich ja auch erst vor, aber die debug version läuft leider auf anderen pcs nicht, da kommt immer die fehlermeldung:


```
Side-by-Side-Konfiguration ungültig
```

Gruß


----------



## deepthroat (27. Januar 2009)

CKS07 hat gesagt.:


> Ja das hatte ich ja auch erst vor, aber die debug version läuft leider auf anderen pcs nicht, da kommt immer die fehlermeldung:
> 
> 
> ```
> ...


Ich denke mal du hast die Runtime Bibliotheken nicht installiert:

http://www.microsoft.com/downloads/...75-3B97-4AB7-A40D-3802B2AF5FC2&displaylang=en

Gruß


----------



## CKS07 (27. Januar 2009)

Doch die ist auf dem anderen PC installiert!


----------



## deepthroat (27. Januar 2009)

Evtl. ist es die falsche?

Du könntest noch ein Setup Projekt im Visual Studio erstellen, da sollte es möglich sein alles einzubinden was das Programm benötigt.

Gruß


----------



## CKS07 (27. Januar 2009)

Ja ich denke das Werde ich auch machen!


----------



## jsendrow (28. Januar 2009)

deepthroat hat gesagt.:


> Es gibt allerdings auch keinen vernünftigen Grund warum das Programmm nicht das tun sollte, was es im Debug Modus auch tut.



Natürlich gibt  es einen sehr vernünftigen Grund: Initialisierung.

Im Debug Modus werden alle Variablen automatisch auf 0 initialisiert auch wenn der er das nicht explizit macht. Im Release Modus dagegen passiert das nicht, da kann eine nicht initialiserte Variable einen beliebigen Wert annehmen (was immer im Speicher stand).



> c:\projekte\windows1\windows1\form1.h(598) : warning C4700: Die nicht initialisierte lokale Variable "test" wurde verwendet.



Ohne den Sourcecode kann ich nicht sagen wofür genau die Variable "test" verwendet wird aber das könnte der Fehler sein.

GRUNDSÄTZLICH immer alle Variablen mit einem defaultwert initialisieren oder direkt initialisieren, also ca so:


```
int x = 0;

int y = GetDefaultWert();
```


NIEMALS


```
int x;
```


----------



## CKS07 (28. Januar 2009)

Oh das könnte auf jeden Fall ein Grund sein...ich habe bloß das problem das die variable test ein "StringComparison" ist und ich leider nicht weiß wie ich die initialisiere?

Gruß


----------



## deepthroat (28. Januar 2009)

CKS07 hat gesagt.:


> Oh das könnte auf jeden Fall ein Grund sein...


Da habe ich dich allerdings auch schon zweifach drauf hingewiesen... 

Das ist doch normal das erste was man tut, das man die Warnungen des Compilers auflöst... 


CKS07 hat gesagt.:


> ich habe bloß das problem das die variable test ein "StringComparison" ist und ich leider nicht weiß wie ich die initialisiere?


Das ist eine Enumeration und diese kannst du mit den entsprechenden Werten initialisieren: http://msdn.microsoft.com/en-us/library/system.stringcomparison.aspx

Außerdem sollte die automatische Vervollständigung die möglichen Werte auch anzeigen...

Gruß

PS: Bitte achte auf deine Groß-/Kleinschreibung. Danke.


----------

