Visual studio 2010 如何在32位XP Sp3上使用VS 2010 Ultimate解决构建错误

Visual studio 2010 如何在32位XP Sp3上使用VS 2010 Ultimate解决构建错误,visual-studio-2010,windows-xp-sp3,Visual Studio 2010,Windows Xp Sp3,在我的台式工作站Dell Precision T3500(Windows 7 64位操作系统)和IBM ThinkPad R51(Windows XP Sp3 32位)上安装了VS2010 Ultimate 我在臭板上构建解决方案时遇到了问题,无法找出原因。如下所列,编译器生成的ADO库的生成输出列出了以下错误: c:\wpds\debug\msjro.tlh(196):错误C2146:语法错误:缺少“;”在标识符“ConflictTables”之前 c:\wpds\debug\msjro.tl

在我的台式工作站Dell Precision T3500(Windows 7 64位操作系统)和IBM ThinkPad R51(Windows XP Sp3 32位)上安装了VS2010 Ultimate

我在臭板上构建解决方案时遇到了问题,无法找出原因。如下所列,编译器生成的ADO库的生成输出列出了以下错误:

c:\wpds\debug\msjro.tlh(196):错误C2146:语法错误:缺少“;”在标识符“ConflictTables”之前 c:\wpds\debug\msjro.tlh(196):错误C4430:缺少类型说明符-假定为int。注意:C++不支持默认int c:\wpds\debug\msjro.tlh(196):错误C4430:缺少类型说明符-假定为int。注意:C++不支持默认int c:\wpds\debug\msjro.tlh(224):错误C2146:语法错误:缺少“;”在标识符“GetConflictTables”之前 c:\wpds\debug\msjro.tlh(224):错误C4430:缺少类型说明符-假定为int。注意:C++不支持默认INT/P> 我已检查以确保所有项目和解决方案的所有include、exe和库路径都正确。如有任何见解,将不胜感激。 谢谢
Bill

我第一次使用新版本的msado15.dll编译时遇到了同样的问题。msado15.dll和msjro.dll之间存在依赖关系,msjro.tlb顶部的这些行证明了这一点:

// Cross-referenced type libraries:
//
//  #import "C:\Program Files (x86)\Common Files\System\ado\msado15.dll"
//
在我的例子中,出现问题是因为我在Windows7上构建应用程序,而这将导致应用程序在WindowsXP上失败。当我使用KB修复此问题时,我的msado dll问题已修复,但我的msjro.tlb已停止编译。 可能有一种方法可以更新msjro以引用所需/正确的msado(在我的例子中,是安装在KB中的msado60_Backcompat.tlb),但是如果您使用的是ado2.cpp和ado2.h中定义的,并且如果您没有使用特定于jet的功能,一个更简单的修复方法就是注释掉ado2.h和ado2.cpp中引用jet的部分。
我刚刚在ado2.h中注释掉了这一行:

//#import <MSJRO.DLL> no_namespace rename("ReplicaTypeEnum", "_ReplicaTypeEnum") 
/#导入不_名称空间重命名(“ReplicateTypeEnum”,“_ReplicateTypeEnum”)
而且#ifdef已经在ado2.cpp中完成了CJetEngine方法的所有实现,这对我很有用


祝你好运

我也有这个问题。然后我比较了在WinXP上创建的MSJRO.TLH和在Win7上创建的MSJRO.TLH。在WinXP上,声明是

ADODB::_RecordsetPtr ...
在Win7上是

_RecordsetPtr ...
我猜问题可能与名称空间有关。TLH定义了一个名称空间——“ADODB”。因此,我提出:

using namespace ADODB;
在我进口飞机之前

#import "MSJRO.DLL"

这为我消除了错误。

你能告诉我如何在错误的代码行周围创建代码吗?你有没有找到解决方法?我相信我也遇到了同样的问题