3 Stimmen

Wie man Build-Fehler unter Verwendung von VS 2010 Ultimate auf 32-Bit-XP Sp3 löst

Ich habe VS2010 Ultimate auf meinem Desktop-Workstation - Dell Precision T3500 (Windows 7 64-Bit-Betriebssystem) und auf meinem IBM ThinkPad R51 (Windows XP Sp3 32-Bit) installiert.

Ich habe Probleme beim Erstellen von Lösungen auf dem StinkPad und kann nicht herausfinden, warum. Wie unten aufgeführt, listet die Build-Ausgabe für eine Compiler-erstellte ADO-Bibliothek die folgenden Fehler auf:

c:\wpds\debug\msjro.tlh(196): Fehler C2146: Syntaxfehler: ';' fehlt vor dem Bezeichner 'ConflictTables' c:\wpds\debug\msjro.tlh(196): Fehler C4430: Fehlender Typ-Spezifizierer - int angenommen. Hinweis: C++ unterstützt standardmäßiges int c:\wpds\debug\msjro.tlh(196): Fehler C4430: Fehlender Typ-Spezifizierer - int angenommen. Hinweis: C++ unterstützt standardmäßiges int c:\wpds\debug\msjro.tlh(224): Fehler C2146: Syntaxfehler: ';' fehlt vor dem Bezeichner 'GetConflictTables' c:\wpds\debug\msjro.tlh(224): Fehler C4430: Fehlender Typ-Spezifizierer - int angenommen. Hinweis: C++ unterstützt standardmäßiges int

Ich habe überprüft, ob alle Include-, Exe- und Bibliothekspfade für alle Projekte und Lösungen korrekt sind. Jeder Einblick wird sehr geschätzt. Danke Bill

0 Stimmen

Können Sie den Code um die fehlerhafte Zeile Code zeigen?

0 Stimmen

Hast du jemals eine Lösung für dieses Problem gefunden? Ich glaube, ich bin auf das gleiche Problem gestoßen.

2voto

rfeague Punkte 403

Ich bin auf dasselbe Problem gestoßen, als ich zum ersten Mal mit einer neuen Version von msado15.dll kompiliert habe. Es gibt Abhängigkeiten zwischen msado15.dll und msjro.dll, wie diese Zeilen am Anfang von msjro.tlb zeigen:

// Querverwiesene Typbibliotheken:
//
//  #import "C:\Program Files (x86)\Common Files\System\ado\msado15.dll"
//

In meinem Fall trat das Problem auf, weil ich meine App unter Windows 7 erstelle und das SP1-Update eine Änderung in msado15.dll beinhaltet, die dazu führen wird, dass die Anwendung auf Windows XP fehlschlägt. Als ich dieses Problem mit diesem KB behoben habe, wurden meine msado-DLL-Probleme behoben, aber meine msjro.tlb hat aufgehört zu kompilieren. Es gibt wahrscheinlich eine Möglichkeit, msjro so zu aktualisieren, dass es auf die gewünschte/korrekte msado-Referenz verweist (in meinem Fall msado60_Backcompat.tlb, wie in dem KB installiert), aber wenn Sie CADODatabase-Klassen verwenden, die in ado2.cpp und ado2.h definiert sind, und wenn Sie keine jet-spezifischen Funktionen verwenden, ist es einfacher, einfach die Teile von ado2.h und ado2.cpp auszukommentieren, die auf jet verweisen.
Ich habe einfach diese Zeile in ado2.h auskommentiert:

//#import  no_namespace rename("ReplicaTypeEnum", "_ReplicaTypeEnum") 

und habe auch alle Implementierungen der CJetEngine-Methoden in ado2.cpp #ifdef'd herauskommentiert, und das hat für mich funktioniert.

Viel Glück!

1voto

dchang Punkte 11

Ich hatte auch dieses Problem. Dann habe ich die erstellte MSJRO.TLH auf WinXP mit der auf Win7 verglichen. Auf WinXP war die Deklaration

ADODB::_RecordsetPtr ...

auf Win7 war es

_RecordsetPtr ...

Ich vermutete, dass das Problem mit Namespace zusammenhängen könnte. MSADO15.TLH definiert einen Namespace - "ADODB". Also habe ich hinzugefügt:

using namespace ADODB;

vor meinem Import des Jet.

#import "MSJRO.DLL"

Dies hat die Fehler für mich beseitigt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X