xp下开发的ocx,xp注册成功,win7下注册不成功,

原创 2016年02月26日 17:22:15

再次非常的感谢”赵4老师“的网上帮助、与指导

一、xp、Win 7 环境不同引起Ado编译错误 ,解决办法

(


错误如下:

MSJRO.tlh(100) : error C2146: syntax error : missing ';'before identifier 'ConflictTables'
MSJRO.tlh(100) : error C2501: '_RecordsetPtr' : missingstorage-class or type specifiers
MSJRO.tlh(100) : error C2501: 'ConflictTables' : missingstorage-class or type specifiers
MSJRO.tlh(128) : error C2146: syntax error : missing ';'before identifier 'GetConflictTables'
MSJRO.tlh(128) : error C2501: '_RecordsetPtr' : missingstorage-class or type specifiers
MSJRO.tli(43) : error C2143: syntax error : missing ';' before'tag::id'
MSJRO.tli(43) : error C2433: '_RecordsetPtr' : 'inline' notpermitted on data declarations
MSJRO.tli(43) : error C2501: '_RecordsetPtr' : missingstorage-class or type specifiers
MSJRO.tli(43) : fatal error C1004: unexpected end of filefound

原来头文件相关代码是这样:
#if !defined(AFX_ADO2_H_INCLUDED_)
#define AFX_ADO2_H_INCLUDED_

#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
#include <afx.h>
#include <afxdisp.h>
#include <math.h>
//#include "C:\Program Files\Microsoft Analysis Services\Samples\Include\msmd.h"

#pragma warning (disable: 4146)
// CG : In order to use this code against a different version of ADO, the appropriate
// ADO library needs to be used in the #import statement
//#import "C:\Program Files\Common Files\System\ADO\msado15.dll" rename("EOF", "EndOfFile")
//#import "C:\Program Files\Common Files\System\ado\MSJRO.DLL" no_namespace

#import "msado15.dll" rename("EOF", "EndOfFile")
#import "MSJRO.DLL" no_namespace rename("ReplicaTypeEnum", "_ReplicaTypeEnum")
using namespace ADODB;


需要在路径中设置C:\ProgramFiles\Common Files\System\ado\

解决方案:
从XP 系统中拷贝msado15.dll,msjro.dll,放入数据库头文件同目录下,修改头文件:

#import "msado15.dll" rename("EOF", "EndOfFile")
#import "MSJRO.DLL" no_namespace rename("ReplicaTypeEnum","_ReplicaTypeEnum") 

注意:红色字体部分为绝对路径,在新环境下控件还是会到对决路径下查找,由于xp、win7下的文件版本不同,而导致注册失败,提示找不到dll模块
            由于前期的失误,以后绝对不能用绝对路径来引用控件,
二、在win7、2008 r2 中ocx注册不成功的解决(有的win7、2008系统没有问题)
      1、各种注册方法都是过、即使把整个依赖文件都考到ocx同一文件夹下或系统文件夹下都无济于事。
      2、把测试电脑都安装上开发环境,编译最后到注册控件环节就死掉了,把ocx解除占用后,编译成功,但还是在注册环节不能注册
      3、用depends工具把所有问号的dll都放到系统下,注册问题依然不成功
      4、最后看到了网上微软的ado bug的说明https://support.microsoft.com/zh-cn/kb/2640696,终于清楚了,
     最终解决办法
     1、从微软官网发布的的信息读到,应该server2003中的ado不存在此问题,此问题已经拖了好长时间了,为了节约时间所以先用2003,测试注册没有问题
     2、有没有网友试过打一下win7或server2008的系统补丁包试试,以后再试试把,有测试过的网友反馈一下

VS2015编写程序不兼容XP解决办法可用。留档

http://os.zhongziyun.com/code/39977/ http://blog.csdn.net/asanscape/article/details/38752655
  • u014134886
  • u014134886
  • 2015年09月06日 00:35
  • 5132

ADODB错误解决办法

错误如下: MSJRO.tlh(100) : error C2146: syntax error : missing ';' before identifier 'ConflictTab...
  • zhouschina
  • zhouschina
  • 2014年06月30日 15:41
  • 1891

xp下开发的ocx,xp注册成功,win7下注册不成功,

Win 7 更新引起Ado编译错误引起,解决办法 ( 错误如下: MSJRO.tlh(100) : error C2146: syntax error : missing ';'be...
  • ddjj_1980
  • ddjj_1980
  • 2016年02月26日 17:22
  • 1590

msado15.dll 使用心得

一,首先msado15.dll有不同的版本,不同的版本有不同的接口在注册表中显示为不同的CLSID,接口不同,编译也是会出问题的,但已经编译出来的软件,可以在高版本的msado15.dll上运行,不用...
  • harvic880925
  • harvic880925
  • 2012年07月20日 17:32
  • 22351

win7、xp注册ocx控件

@ echo off cd /d %~dp0file regsvr32  MSINET.OCX regsvr32  MSADODC.OCX regsvr32  MSCOMCTL.OCX
  • gao_zhuang
  • gao_zhuang
  • 2014年07月25日 10:33
  • 1659

VS2015 ATL 在XP 系统下无法注册

Link the CRT statically - in Config Properties / C/C++ / Code Generation / Runtime Library select th...
  • SmallSmile
  • SmallSmile
  • 2015年12月14日 13:34
  • 1249

msado15.dll 使用心得

一,首先msado15.dll有不同的版本,不同的版本有不同的接口在注册表中显示为不同的CLSID,接口不同,编译也是会出问题的,但已经编译出来的软件,可以在高版本的msado15.dll上运行,不用...
  • harvic880925
  • harvic880925
  • 2012年07月20日 17:32
  • 22351

ACCESS时,创建新数据库时总是弹出DLL加载错误,Active不能创建此文件

一 到如下路径:C:/Program Files/Common Files/Microsoft Shared/DAO 找到扩展名为DLL或dll的两个文件。我的这两个文件分别是 DAO350.DLL ...
  • twty5210
  • twty5210
  • 2010年11月10日 14:40
  • 4199

XP 下注册 MSComm32.ocx 方法

由于在项目中要和串口通信,在VS2003中没有提供串口通信的控件,只好通过MSComm32.OCX控件来解决,以下是在XP中注册该控件的方法:1.     将MSComm32.OCX文档Copy到wi...
  • xieyj
  • xieyj
  • 2008年01月14日 11:17
  • 5377

windows系统下注册和检测 ocx,dll控件的问题.........

 in fact ...ocx控件注册和检测其实是对注册表中的相应的项注册和检测,当然注册表那些操作函数就不能不用到: 注册ocx控件无非两句话的功夫, 1、在系统目录下即:C:/windows/sy...
  • anddy926
  • anddy926
  • 2010年11月03日 16:25
  • 4584
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:xp下开发的ocx,xp注册成功,win7下注册不成功,
举报原因:
原因补充:

(最多只允许输入30个字)