# DLL - Probleme mit Visual Studio 2005



## StonedMind (25. Juni 2007)

Hallo Leute,

ich versuche gerade mit C++ Datensätze aus einer MySQL Datenbank auszulesen (Konsole, kein MFC).
Wenn ich das Programm kompiliere, erscheint keine Fehlermeldung, d.h. Quelltext ist fehlerfrei. 
Wenn ich es ausführe erscheint das Konsolenfenster, allerdings wird nichts ausgegeben, sonder es steht nur "Drücken Sie eine beliebige Taste..." da.
Als ich dann den Debugger starte, erscheinen folgende Fehlermeldungen


```
"test.exe": "G:\Andy\Programmierung_Entwicklung\test\debug\test.exe" geladen, Die Binärdaten wurden nicht mit Debuginformationen erstellt.
"test.exe": "C:\WINDOWS\system32\ntdll.dll" geladen, Keine Symbole geladen.
"test.exe": "C:\WINDOWS\system32\kernel32.dll" geladen, Keine Symbole geladen.
"test.exe": "C:\WINDOWS\system32\libmySQL.dll" geladen, Die Binärdaten wurden nicht mit Debuginformationen erstellt.
"test.exe": "C:\WINDOWS\system32\wsock32.dll" geladen, Keine Symbole geladen.
"test.exe": "C:\WINDOWS\system32\ws2_32.dll" geladen, Keine Symbole geladen.
"test.exe": "C:\WINDOWS\system32\msvcrt.dll" geladen, Keine Symbole geladen.
"test.exe": "C:\WINDOWS\system32\ws2help.dll" geladen, Keine Symbole geladen.
"test.exe": "C:\WINDOWS\system32\advapi32.dll" geladen, Keine Symbole geladen.
"test.exe": "C:\WINDOWS\system32\rpcrt4.dll" geladen, Keine Symbole geladen.
"test.exe": "C:\WINDOWS\system32\mswsock.dll" geladen, Keine Symbole geladen.
"test.exe": "C:\WINDOWS\system32\dnsapi.dll" geladen, Keine Symbole geladen.
"test.exe": "C:\WINDOWS\system32\winrnr.dll" geladen, Keine Symbole geladen.
"test.exe": "C:\WINDOWS\system32\wldap32.dll" geladen, Keine Symbole geladen.
"test.exe": "C:\WINDOWS\system32\rasadhlp.dll" geladen, Keine Symbole geladen.
Eine Ausnahme (erste Chance) bei 0x1000344a in test.exe: 0xC0000005: Zugriffsverletzung beim Schreiben an Position 0x00130000.
Eine Ausnahme (erste Chance) bei 0x00000000 in test.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00000000.
.
.
.
Eine Ausnahme (erste Chance) bei 0x00000000 in test.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00000000.
Unbehandelte Ausnahme bei 0x00000000 in test.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00000000.
Das Programm "[4624] test.exe: Systemeigen" wurde mit Code 0 (0x0) beendet.
```

Hab schon überall gesucht, allerdings nichts hilfreiches. 
tutorial.de ist meine letzte Hoffnung. Bin euch für jede Hilfe dankbar.

MfG
Andy


----------



## MCoder (25. Juni 2007)

Hallo, gehe doch mal mit dem Debugger schrittweise durch's Programm, um festzustellen, an welcher Stelle der Fehler auftritt.

Gruß
MCoder


----------



## StonedMind (25. Juni 2007)

MCoder hat gesagt.:


> Hallo, gehe doch mal mit dem Debugger schrittweise durch's Programm, um festzustellen, an welcher Stelle der Fehler auftritt.
> 
> Gruß
> MCoder





fängt schon ganz oben an an folgender Stelle

```
#pragma comment (lib, "libmySQL.lib")
```

in dieser Zeile bleibt der Debugger stehn. vllt verwende ich die *.dll oder die *.lib falsch.
kann mir da vielleicht jemand weiterhelfen?
wie muss ich denn diese einbinden?
habe libmysql.dll in system32 und in den debugordner meines projekts eingefügt.
außerdem ist die libmysql.lib ebenfalls im debugordner meines projekts.
weiß vllt jemand weiter?
bin für jede hilfe dankbar

mfg
Andy


----------



## MCoder (25. Juni 2007)

StonedMind hat gesagt.:


> in dieser Zeile bleibt der Debugger stehn


Hmm, also das verstehe ich überhaupt nicht, denn #pragma ist eine Präprozessor-Anweisung. Das heisst, sie wird schon bei der Erstellung der EXE (Compiler, Linker) ausgewertet, ist also zur Laufzeit völlig irrelevant, weil damit keine Codeausführung verbunden ist. Der Debugger kommt niemals an diese Stelle.

Wie debuggst du denn? Setze doch mal einen Breakpoint an den Anfang der main()-Funktion.

Gruß
MCoder


----------



## StonedMind (25. Juni 2007)

MCoder hat gesagt.:


> Hmm, also das verstehe ich überhaupt nicht, denn #pragma ist eine Präprozessor-Anweisung. Das heisst, sie wird schon bei der Erstellung der EXE (Compiler, Linker) ausgewertet, ist also zur Laufzeit völlig irrelevant, weil damit keine Codeausführung verbunden ist. Der Debugger kommt niemals an diese Stelle.
> 
> Wie debuggst du denn? Setze doch mal einen Breakpoint an den Anfang der main()-Funktion.
> 
> ...



Stimmt, du hast recht. Der Debugger arbeitet schon das ganze Programm ab. Allerdings wird in der Konsole nicht ausgegeben, obwohl ich einige cout-Befehle drin stehen hab.
Ich geh mal davon aus, dass der Fehler an den DLL's liegt, die mir in der Fehlermeldung angezeigt werden.
Allerdings weiß ich wie gesagt nicht, ob ich diese auch richtig verwende. Ich machs halt so wie ich es im oberen Beitrag beschrieben hab.
Allerdings weiß ich net weiter.

Wie kann ich dieses Problem lösen?
Bin für jede Hilfe dankbar
MfG
Andy


----------



## MCoder (25. Juni 2007)

Hallo,

das eigentliche Problem sind die Zugriffsverletzungen. Also, wie schon gesagt, einen Breakpoint an den Anfang des Programmes setzen und schrittweise laufen lassen: Mit F5 bis zum Breakpoint und mit F10 dann Anweisung für Anweisung weiter. Damit kannst du gut kontrollieren, was das Programm macht und dir auch die Variableninhalte anzeigen lassen.

Gruß
MCoder


----------



## StonedMind (25. Juni 2007)

MCoder hat gesagt.:


> Hallo,
> 
> das eigentliche Problem sind die Zugriffsverletzungen. Also, wie schon gesagt, einen Breakpoint an den Anfang des Programmes setzen und schrittweise laufen lassen: Mit F5 bis zum Breakpoint und mit F10 dann Anweisung für Anweisung weiter. Damit kannst du gut kontrollieren, was das Programm macht und dir auch die Variableninhalte anzeigen lassen.
> 
> ...



Hi,

das mit dem Debuggen klappt doch net so ganz:

1.) Nach dem ich den Debugger starte(F5) erscheint folgendes Fenster:

http://www.tutorials.de/forum/attachment.php?attachmentid=31448&stc=1&d=1182804540

Da bleibt mir nix anderes übrig, als auf "Ja" zu klicken, da der Debugger ja sonst beendet wird.

2.) Nachdem ich auf ja klicke kommt dieses Fenster:

http://www.tutorials.de/forum/attachment.php?attachmentid=31449&stc=1&d=1182804540

Jedes mal nachdem ich auf "Weiter" klicke kommt das gleiche Fenster nochmal.
Wenn ich auf "Unterbrechen" klicke wird der Debugger gestoppt(nicht beendet).

3.) Nachdem der Debugger gestoppt ist wollte ich noch folgendes zeigen (wegen Haltepunkt). Keine Ahnung was das zu bedeuten hat:

http://www.tutorials.de/forum/attachment.php?attachmentid=31450&stc=1&d=1182804540

Wie gesagt, bin euch echt für jede Hilfe dankbar.
MfG
Andy


----------



## MCoder (26. Juni 2007)

Hallo,

normalweise sollte es reichen, in der Projektmappenkonfiguration "Debug" als aktive Konfiguration einzustellen, damit das Programm mit Debuginformationen erstellt wird.
Was für einen Projekttyp hast du denn ursprünglich angelegt?

Gruß
MCoder


----------



## StonedMind (26. Juni 2007)

MCoder hat gesagt.:


> Hallo,
> 
> normalweise sollte es reichen, in der Projektmappenkonfiguration "Debug" als aktive Konfiguration einzustellen, damit das Programm mit Debuginformationen erstellt wird.
> Was für einen Projekttyp hast du denn ursprünglich angelegt?
> ...



Hi, 

Projektmappenkonfig. ist auf "Aktiv(Debug)" gesetzt und das Projekt ist ein leeres Projekt, in das ich dann eine *.cpp-Datei eingefügt habe.
Hab echt keine Ahnunng woran das liegen könnte.
MfG Andy


----------



## MCoder (26. Juni 2007)

Hallo,

die Projekteinstellungen scheinen etwas verkorkst. Versuch's doch mal neu aufzusetzen; am besten vielleicht mal als "Win32-Konsolenanwendung".

Gruß
MCoder


----------

