2009-04-23 4 views
0

fand ich ein großer C++/ODBC Beispiel here ...C++ ODBC Problem mit sqlucode.h Header

Das Projekt I baut großes heruntergeladen und alles funktioniert. Wenn ich jedoch die .cpp- und .h-Dateien in ein anderes Projekt kopiere, scheint mir ein Verknüpfungsproblem zu bestehen.

Die SQLConnect Funktion in sql.h ist die, die ich will. Wenn ich mit der rechten Maustaste auf diese Funktion in der Datei easyodbc.h in dem Projekt klicke, das ich heruntergeladen habe, springt es zur Deklaration in sql.h. Das leben ist gut.

Allerdings, in dem Projekt, das ich erstellt habe, wenn ich dies tue, springt es zu einer UNICODE-Definition in sqlucode.h. Dies scheint Probleme zu verursachen und mein Testprojekt stürzt ab.

Ich habe keine #include für sqlucdode.h irgendwo in meinem Projekt, aber es löst immer noch die Deklaration zu der in sqlucode.h. Wie kann ich das verhindern? Vielen Dank.

Antwort

5

Scheint so, als ob Sie ein Präprozessorproblem und nicht ein Verknüpfungsproblem haben.

Sie haben wahrscheinlich eine Präprozessordefinition für UNICODE (oder _UNICODE) in Ihrer Projektdatei. In Visual C++ 2005 und 2008 können Sie das beheben, indem Sie zu Ihren Projekteigenschaften gehen und den Zeichensatz von ändern. Verwenden Sie den Unicode-Zeichensatz bis Verwenden Sie den Multi-Byte-Zeichensatz. Wenn Sie diese Einstellung anwenden, korrigiert Visual Studio die richtigen Präprozessor- und Linkereinstellungen für Sie.

Wenn Sie eine frühere Version von Visual Studio haben, können Sie immer noch das Problem beheben, indem Sie die Präprozessordefinitionen für UNICODE und _UNICODE zu _MBCS verändert sich - es ist nur werden Sie sie selbst finden müssen.

EDIT: Ich habe gerade diesen Beispielcode heruntergeladen und es ausprobiert - gute Neuigkeiten, es ist genau wie ich vermutete, zu einem Multibyte-Zeichensatz wechseln und alles wird gut.

+0

wo/wie genau würde ich diese Definition hinzufügen? Ich habe ein paar Dinge ausprobiert, aber ich bekomme immer noch Build-Fehler: Fehler C2664: 'SQLConnectW': kann Parameter 2 nicht von 'SQLCHAR *' in 'SQLWCHAR *' konvertieren –

+0

Es hängt davon ab, welche Version von Visual C++ Sie verwenden - kannst du angeben? – snowcrash09

+0

Das hat es geschafft! Ich musste das Projekt auch selbst öffnen - ich hatte eine Lösung mit anderen C# -Projekten darin, aus irgendeinem Grund, die es zu sqlucode.h auflösen ließen, selbst wenn das Projekt auf MBCS eingestellt war. Vielen Dank!!! –