2010-09-28 6 views
3

Installé VS2010 Ultimate sur mon poste de travail de bureau - Dell Precision T3500 (Windows 7 64bit OS), et sur mon IBM ThinkPad R51 (Windows XP Sp3 32bit).Comment résoudre les erreurs de construction en utilisant VS 2010 Ultimate sur 32bit XP Sp3

Je rencontre des problèmes des solutions de construction sur le stinkpad, et ne peut pas comprendre pourquoi. Comme indiqué ci-dessous, la sortie de génération pour une bibliothèque ADO construite par le compilateur répertorie les erreurs suivantes:

c: \ wpds \ debug \ msjro.tlh (196): erreur C2146: erreur de syntaxe: manquant ';' avant l'identificateur 'ConflictTables' c: \ wpds \ debug \ msjro.tlh (196): erreur C4430: spécificateur de type manquant - int supposé. Remarque: C++ ne prend pas en charge default-int c: \ wpds \ debug \ msjro.tlh (196): erreur C4430: spécificateur de type manquant - int supposé. Note: C++ ne prend pas en charge par défaut-int c: \ DDPR \ debug \ msjro.tlh (224): erreur C2146: erreur de syntaxe: manquant ';' avant c identificateur 'GetConflictTables de: \ DDPR \ debug \ msjro.tlh (224): erreur C4430: Type manquant spécificateur - int supposé. Note: C++ ne prend pas en charge par défaut-int

J'ai vérifié pour vous assurer que tous comprennent, exe, et les chemins de bibliothèque sont corrects pour tous les projets et solutions. Toute idée sera grandement appréciée. Merci Bill

+0

Pouvez-vous comment le code autour de la ligne de code fautif? – rubenvb

+0

Avez-vous déjà trouvé une solution à ce problème? Je crois que j'ai rencontré le même problème – stuartjsmith

Répondre

2

J'ai rencontré ce même problème lors de la compilation pour la première fois avec une nouvelle version de msado15.dll. Il existe des dépendances entre msado15.dll et Msjro.dll, comme en témoigne ces lignes en haut de msjro.tlb:

// Cross-referenced type libraries: 
// 
// #import "C:\Program Files (x86)\Common Files\System\ado\msado15.dll" 
// 

Dans mon cas, le problème se pose parce que je construis mon application sur Windows 7, et le SP1 update includes a breaking change in msado15.dll qui provoquera l'échec de l'application sur Windows XP. Lorsque j'ai corrigé ce problème en utilisant this Ko, mes problèmes msado dll ont été corrigés mais mon msjro.tlb a arrêté la compilation. Il y a probablement une façon de mettre à jour msjro faire référence à la msado désirée/correcte (dans mon cas, msado60_Backcompat.tlb comme installé dans la base de connaissances), mais si vous utilisez CADODatabase classes défini dans ado2.cpp et ado2.h, et si vous n'utilisez pas de fonctionnalités spécifiques au jet, une solution plus simple consiste simplement à commenter les parties de ado2.h et ado2.cpp qui font référence au jet.
Je viens de remarquer cette ligne ado2.h:

//#import <MSJRO.DLL> no_namespace rename("ReplicaTypeEnum", "_ReplicaTypeEnum") 

et aussi # ifdef'd sur toutes les mises en œuvre des méthodes CJetEngine dans ado2.cpp, et qui a travaillé pour moi.

Bonne chance!

1

J'ai eu ce problème aussi. Puis j'ai comparé le MSJRO.TLH créé sur WinXP à celui créé sur Win7. Sur Windows XP la déclaration était

ADODB::_RecordsetPtr ... 

sur Win7 il était

_RecordsetPtr ... 

Je devinai que le problème pourrait être lié à namespaces. MSADO15.TLH définit un espace de noms - "ADODB". J'ai donc placé:

using namespace ADODB; 

avant mon importation du Jet.

#import "MSJRO.DLL" 

Cela s'est débarrassé des erreurs pour moi.

Questions connexes