evc4下在standardsdk emulator或者ppc2003用adoce3.0(或者3.1)访问sdf数据库

问题:使用evc4第一个碰到的问题就是,ADOCE3.1在哪里?怎么安装ADOCE3.1?

先来看一段SQL SERVER CE2.0的Readme:(节选) 2.3.1  Setup for eMbedded Visual Tools
1.Before you install SQL Server CE for use with the eMbedded Visual Tools development environment, you must: Install Microsoft eMbedded Visual Tools 3.0 and at least one of the following software development kits: Microsoft Windows Powered Pocket PC 2002, Pocket PC, or Handheld PC 2000.
2.Upgrade to Microsoft ActiveSync? 3.5 or later.
3.Verify that you have Administrator access on the target system and that the Administrators group has change permission on the installation directory.
Install Development Tools on the computer that you will use to develop your SQL Server CE-based applications, and install Server Tools on the computer that you will use as the server running Microsoft Internet Information Services (IIS). SQL Server CE Setup prompts you for a Development Tools or a Server Tools installation. If the development computer and the computer running IIS are the same, you can install both Development Tools and Server Tools.

1.A Development Tools installation first installs the Microsoft ActiveX? Data Objects for Windows CE (ADOCE) 3.1 components and then the SQL Server CE components. The following table shows the products and where they are installed by default.
Product                      Folder
ADOCE 3.1              C:/Windows CE Tools/Dataaccess31
SQL Server CE        C:/Program Files/Microsoft SQL Server CE 2.0
Server Tools Setup (a self-extracting executable, which can be used to configure the IIS computer)    C:/Program Files/Microsoft SQL Server CE 2.0/Redist
2.A Server Tools installation, by default, first installs Microsoft Data Access Components (MDAC) 2.6, and then the SQL Server CE components in C:/Program Files/Microsoft SQL Server CE 2.0/Server on the computer running IIS. If a later version of MDAC is already installed on the computer, the Server Tools installation does not install MDAC 2.6. Server Tools requires Microsoft Internet Explorer 5.01.

To install SQL Server CE on a Pocket PC-based, Pocket PC 2002-based, or Handheld PC 2000-based device, use either the eMbedded Visual Basic procedure or the manual procedure described in SQL Server CE Books Online. The Include and Lib files for SQL Server CE are located in the Lib and Inc subdirectories of the SQL Server CE installation directory. The Include and Lib files for OLE DB for SQL Server CE are located in the Include and Lib subdirectories of the Dataaccess31 folder. Use the Lib file that matches the processor and platform for which you are compiling.

Note  Using ADOCE through Microsoft eMbedded Visual C++? is not a supported means for accessing SQL Server CE.
装了很多次了,都没有安装ADOCE3.1(暂时的证据是整个硬盘都找不到Dataaccess31文件夹),于是我到微软上下载了这两个东西:
(1)ActiveX Data Objects for the Windows CE operating system (ADOCE) 3.1
文件名:adocepbzip.exe
地址: http://www.microsoft.com/downloads/details.aspx?FamilyID=929bb147-281c-4d6e-a727-67271075fadb&DisplayLang=en
(2)ActiveX Data Objects for the WindowsCE operating system (ADOCE) 3.1 for Windows 3.0 SDKs
文件名:adocesdkzip.exe
地址: http://www.microsoft.com/downloads/details.aspx?FamilyID=929bb147-281c-4d6e-a727-67271075fadb&DisplayLang=en
安装第一个时提示要先装PB,我没装,放弃,装第二个时提示要先装至少一个windows ce platform sdk,我已经有了standardsdk emulator还有ppc和sp(都是2003),怎么还提示我这个?又放弃。后来看readme发现:
RequirementsWindows? CE Data Access 3.1 requires the new release of Microsoft? Embedded Visual Tools. Prior to installing this SDK add-on, you must have previously installed any or all of the following Windows CE SDKs: Microsoft SDK for Windows CE, Handheld PC Professional Edition 3.0 Microsoft SDK for Windows CE, Palm-size PC Edition 1.2 Microsoft Windows Platform SDK for Pocket PC 明白!
且看网友怎么说:
网友jiess(杰西)说:
装了sqlce2.0,在PC机上有adoce31,拷贝到DEVICE上,运行时,用dllregister注册一下就行了.
网友jacky_emdoor(浪子)说:
其实只需要(下载下来的安装文件里面的)/adocepb/setup/Data Access 3.1/Program Files/DataAccess31/DEVICE/ARM/SA1100/CE/RETAIL下的DLL文件拷贝到WINCE下/WINDOWS下,并且注册必要的组件,再运行你的数据库软件就可以了。

疑问 :“装了sqlce2.0,在PC机上有adoce31”,我的怎么没有?/Windows CE Tools目录下没有dataaccess的目录。于是我按照jacky_emdoor(浪子)的说法去做,的确是可以注册的。
另外:
有网友说:
在evc里使用
namespace MSADOCE
{
#include <adoce31.h>
}
我编译时出现fatal error C1083: Cannot open include file: 'adoce31.h': No such file or directory
那么,如何获得这个adoce31.h?(后面会说到)
vvv_for_ever (vvvvv) 说:
1)生成adoce31.h头文件
2)用dllregster.exe注册了所有有关adoce31的dll文件
3)已经可以正确地生成connection和recordset
但是出现了如下问题:
1)当recordset调用put_ActiveConnection的时候发生如下错误:datatype misalignment
2)使用VOConnection和VORecordset时,也出现了一样的问题.
3)我将VOConnection和VORecordset中对ADO30.h的引用都改成了ado31.h,是不是这样就能完成Connection和VORecordset到ado31的过渡了?
不明白他是怎么生成adoce31.h头文件的?(后面会说到)
回过头来看看Readme,你会发现,上面说的都是evt(evc3)环境下的安装,呜呼!
于是,我在已安装evc4的情况下安装evt,结果依然。并且这个时候我发现,vc#.net的移动设备开发被破坏了,根本不能建立这样的工程。没办法,我只好都卸掉evc4和evt,然后重装evt。发现原来evt自带ppc2002。装好后,发现已经有了这样一个文件夹:/Windows CE Tools/wce300/Pocket PC 2002/dataaccess31,实在不明白,dataaccess31不是在安装SQL SERVER CE的时候才安装的吗?(而且我在安装SQL SERVER CE2.0时发现它的安装过程的确有复制adoce的东西)另外,在/Windows CE Tools/wce300/Pocket PC 2002/include里面还发现了ADOCE30这些头文件, 3.0和3.1都有了??? 不解!

下面来看看如何获得ADOCE31.h文件 ,其实很简单:
先在下载下来的ADOCE3.1的安装文件里面找到adoce31.idl、adocec31.idl这两个文件,然后在命令行下执行 midl adoce31.idl就会生成 ADOCE31.h 了。同时,你还需要执行midl adocec31.idl来获得adocec31.h。

顺便来看 一个常见的问题
大哥,再问下! 我装好后里面就有一个Configure Connectivity Support in IIS  我再什么地方加数据库 设计表啊?是不是我装得不对 我都装了3遍了啊 !
回答:安装正确!
创建数据库的两种方法:
1.用sql语句创建
2.还可以通过isqlw20.exe来可视化创建(关于这个,请看下面)
来看看SQL Server Books Online里面的Installing SQL Server CE on a Device Using eMbedded Visual Tools
Manual Installation Process
You can manually install SQL Server CE and your eMbedded Visual Tools application on a Windows CE-based device by copying and registering all the required files. Use the following information to determine which files the application requires. Select the files appropriate for the processor type of the Windows CE-based device. To determine the processor type of the device, see the device documentation.
Application Files
On Pocket PCs, you can copy the application executable to the /Windows/Start Menu folder, and then run it from the Start menu on the device. The application executable file is located in the project tree that you create:
Microsoft eMbedded Visual Basic creates the executable file directly in the project subdirectory.
Microsoft eMbedded Visual C++? creates a separate subdirectory for each platform processor type that you want it to build. For example, MIPS processor application executables are created in /projectname/MIPSRel for the release version and /projectname/MIPSDbg for the debug version.

SQL Server CE Files
Copy the SQL Server CE files to the /Windows directory of the Windows CE-based device. These files are located in /Program Files/Microsoft SQL Server CE 2.0/Device/processor family/processor type by default. For more information about file locations and descriptions, see Installing SQL Server CE with eMbedded Visual Tools.
File                                            Requirement
Ssce20.dll                                  Required. Must be registered.
Ssceca20.dll                              Required for replication and remote data access (RDA). Must be registered.
Ssceerror20en.dll                       Optional for error messages used during development.
Isqlw20.exe                               Optional for SQL Server CE Query Analyzer.
ADOCE and OLE DB Files
Copy the SQL Server CE files to the /Windows directory on the Windows CE-based device. These files are located by default in /Windows CE Tools/dataaccess31/Windows CE OS version/processor type.
File                          Requirement
Msdaeren.dll           Optional for error messages. Msdaeren.dll is the English version of the Microsoft ActiveX  Data  Objects for Windows CE (ADOCE) error DLL and works on devices of all languages. For localized ADOCE error messages, substitute the Msdaerxx.dll that corresponds to the language setting of the device.
Adoce31.dll            Required. Must be registered.
Adoceoledb31.dll   Required.
Adoxce31.dll          Required for ADOXCE. Must be registered.
Registering the SQL Server CE Application on the Device
Use DllRegister.exe to register the DLLs that require registration. DllRegister.exe registers all the SQL Server CE, ADOCE, and OLE DB CE components on the device and warns if optional components are missing from the device. DllRegister.exe is located by default in /Program Files/Microsoft SQL Server CE 2.0/Device/processor family/processor type.

To register the SQL Server CE application
Select the appropriate version of DllRegister.exe based on the processor type of the device.
Copy DllRegister.exe from the development system to the Windows CE-based device, and then run the executable. On Pocket PCs, you can copy DllRegister.exe to the /Windows/Start menu folder, and then run it from the Start menu on the device.

Alternately, you can register the DLLs individually by using Regsvrce.exe from the Windows CE SDK or by calling the DllRegisterServer function in each DLL.
这是手工安装的过程,基本上是把相关的dll放到设备(或模拟器)当中使用DllRegister.exe注册,注意,当中有些路径可能和文档所说的有点出入,我的就不一样,例如dataaccess31的路径。还有一个要注意的是(以x86为例),在/Device/X86目录下有两个文件夹/I486和/Emulation,里面都有相同的dll,在模拟器当中应该使用/I486文件夹的(奇怪,为什么不是Emulation?),在实际设备当中没有测试过。
在ppc中,也许你还可以复制/Microsoft Visual Studio .NET 2003/CompactFrameworkSDK/v1.0.5000/Windows CE/wce300/x86下面的文件,然后在ppc中单击安装,同样会得到isqlw20.exe来可视化创建数据库。
暂时得到的结论是:
1,evt下使用ADOCE比较方便,安装ppc2002时就会安装ADOCE3.0,同时也会安装ADOCE3.1,不过,也许这些会在安装SQL SERVER CE才安装。
2,evc4下也是可以使用ADOCE3.1的,已有网友成功。估计是不需要在pc机上安装的,有网友说只需要找到相关文件(例如可以在我上面说的下载的文件里面找到)在pc机上设置好路径就可以开发,至于在设备中,可以用dllregister注册。(这个未经证实:))
3,看看吧:Note  Using ADOCE through Microsoft eMbedded Visual C++? is not a supported means for accessing SQL Server CE.看来,真的要考虑.net了。
4,绕弯路的最大原因是没有看文档,或者看了也不仔细,或者英文水平有限,不能很好的理解。其实选择微软的东西开发有一个很大的好处就是:文档齐全!
posted on 2005-09-28 10:34 zuilang 阅读(18588) 评论(68)    编辑 收藏
-->
评论 # re: 艰苦的过程:在evc中使用ADOCE的前期准备 2005-11-04 15:19 镇静剂
不是说在EVC4下怎么用吗?怎么跑到EVC3里面去了,跑题了,
如题所说,请说说如何在EVC4下使用ADOCE31打开SDF数据文件


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2005-11-04 15:36 zuilang
1,正因为在EVC4下无法通过常规途径安装,于是我转到了EVC3,你没看我说:“回过头来看看Readme,你会发现,上面说的都是evt(evc3)环境下的安装,呜呼!”
2,关于“如何在EVC4下使用ADOCE31”?
在codeproject有用adoce访问access的例子,但这些我都没有具体做过,特别是访问sdf。

我仅仅是做了这个“前期准备”^_^


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2005-11-07 08:25 镇静剂
hr = iADOCEConn->Open(_T("//My Documents//s.sdf"), L"", L"", MSADOCE::adOpenUnspecified);
以你的经验,这句代码,为什么打不开数据库,前提我所有的DLL都已经注册好了,编译无任何问题!
多谢回答!


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2005-11-07 10:27 zuilang
我的经验就是,看返回值(也就是你的hr)看看出了什么问题


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2005-11-07 10:57 镇静剂
hr =  -213574387
返回的数值不是这个,但和这个差不多,具体不太清楚了


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2005-11-18 10:28 迷茫者
是不是用adoce开发数据库,很难啊,我头都大了!
不知楼主可否指点一二!qq:122045695


# re: 网友Macintosh的帖子 2005-12-28 11:13 zuilang
书童 Macintosh 发表于 2005-12-27 11:22:32
EVC4.0+ADOCE3.1访问Access数据库详细过程(测试通过) [所有相关帖子]


1.将Adoce PPC_ARM文件夹中"需要使用的DLL"中的文件复制到设备的Windows文件夹下;
2.数据库程序中在使用VOADO之前注册这些DLL
CreateProcess(_T("/RegSvrCe"),_T("/s /Windows//adoce31.dll"),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
CreateProcess(_T("/RegSvrCe"),_T("/s /Windows//Adoxce31.dll"),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
CreateProcess(_T("/RegSvrCe"),_T("/s /Windows//Adocedb31.dll"),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
CreateProcess(_T("/RegSvrCe"),_T("/s /Windows//Adoceoledb31.dll"),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
CreateProcess(_T("/RegSvrCe"),_T("/s /Windows//Msdaer.dll"),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
CreateProcess(_T("/RegSvrCe"),_T("/s /Windows//Msdaeren.dll"),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
CreateProcess(_T("/RegSvrCe"),_T("/s /Windows//msdadc.dll"),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
CreateProcess(_T("/RegSvrCe"),_T("/s /Windows//msdaosp.dll"),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
3.将VoAdo中所有文件添加到你的工程中,将其中ado??30.h都改为ado??31.h;
4.将vorecordset.h文件中此处改为
BOOL CVORecordset::g_Init = FALSE;
CLSID CVORecordset::g_ClsID;
TCHAR* CVORecordset::g_ProgID = TEXT("ADOCE.Recordset.3.1");
原来第3句为TCHAR* CVORecordset::g_ProgID = TEXT("ADOCE.Recordset.3.0");
5.将Include文件夹中的adoce31.h和adocec31.h添加到你的工程中;
6.将regsvrce.exe复制到设备中和你的数据库程序同一个文件夹下(该文件在Program Files/Microsoft eMbedded C++ 4.0/EVC/WCE400/TARGET/ARMV4文件夹下)。


说明:以上文件的来源
1.DLL文件来自微软的adocepbzip安装包,在这个文件夹下:adocepb/setup/Data Access 3.1/Program Files/DataAccess31/DEVICE/ARM/SA1100/CE/RETAIL
此安装包在这里下载 http://www.microsoft.com/downloads/info.aspx?na=90&p=&SrcDisplayLang=en&SrcCategoryId=&SrcFamilyId=929bb147-281c-4d6e-a727-67271075fadb&u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2fado%2fCE-PB%2f3.1%2fWCE%2fEN-US%2fadocepbzip.exe
2.VoAdo是VOS公司做的一个使用比较方便的ADOCONNECTION和ADORECOEDSET类,下载下来的需要修改(见3)才能使用,本压缩包的文件已经做了修改.在这里下载 http://www.voscorp.com/products/developer/winmobile/voado/voado.zip
3.adoce31.h和adocec31.h文件的生成:
在微软的adocepbzip安装包的adocepb/setup/Data Access 3.1/Program Files/DataAccess31/INCLUDE目录下,有这样两个文件
adoce31.idl和adocec31.idl,在命令行中执行midl adoce31.idl和midl adocec31.idl即可生成.h文件.

感谢 http://blog.vckbase.com/zuilang/archive/2005/09/28/12600.html文章 《在evc中使用ADOCE的前期准备》中给出的宝贵信息!

: 补充“RegSvrCe”的获得 2005-12-28 11:16 zuilang

书童 Macintosh 发表于 2005-12-28 10:25:42
该文件在Program Files/Microsoft eMbedded C++ 4.0/EVC/WCE400/TARGET/ARMV4文件夹下
另外,使用时做成安装文件,直接CAB打包就可以了。


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-03-02 17:05 ming
我使用书童 Macintosh 的方法,但是midl命令无法生成.h文件,说'midl' 不是内部或外部命令,也不是可运行的程序或批处理文件。这要如何解决?

还有请问一下有没有简单的测试连接是否成功的数据库程序啊?谢谢



# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-03-02 18:07 zuilang
        在命令行程序执行midl命令需要MIDL.EXE程序,如果你安装了vc6.0,那么它位于如下路径C:/Program Files/Myprograms/Microsoft Visual Studio/VC98/Bin(视你安装的路径不同而会有所不同),你不妨搜索一下你的机器看有没有?
        关于midl,请看本blog中的 扫盲:什么是IDL和MIDL?(转载)
        我在文章中提过,在codeproject有用adoce访问access的例子,你去看看吧。


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-03-03 20:10 ming
已经生成.h文件了,谢谢zuilang。

小声地问一下,是哪篇文章提过?codeproject在哪?


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-03-04 09:29 zuilang
哦,不好意思,我是在这篇文章的第二个回帖中说的,codeproject是很出名的网站啊,www.codeproject.com


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-03-11 17:06 ming
我从codeproject下载了例子,但是用这种方法都不能编译通过。
基本是找不到某个头文件!!!
郁闷中~~~~~~~~


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-03-11 23:30 yujia120
在下面这步,作者明白了,但我不明白,这几个SDK我都装了,还是提示说没有发现SDK
---------------------------------------------------------------------------
Requirements
Windows&reg; CE Data Access 3.1 requires the new release of Microsoft&reg; Embedded Visual Tools. Prior to installing this SDK add-on, you must have previously installed any or all of the following Windows CE SDKs:  

Microsoft SDK for Windows CE, Handheld PC Professional Edition 3.0  
Microsoft SDK for Windows CE, Palm-size PC Edition 1.2  
Microsoft Windows Platform SDK for Pocket PC  
明白!
---------------------------------------------------------------------------


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-03-11 23:48 jiess
在我装好开发环境后,我确实在PC机上搜到了相关的adoX31.dll文件.
呵呵,楼主辛苦了.


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-03-12 11:22 zuilang
To yujia120:你仔细看清楚,你装的SDK是否和下面的吻合:
1,Handheld PC Professional Edition 3.0版本的SDK
2,Palm-size PC Edition 1.2的SDK
3,Pocket PC  的Platform SDK  
通常大家装的都是smartphone2002、 pocket pc2002等等,他们和上面那些是不一样的


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-03-20 15:42 yujia120
我复制文件后,运行dllregister.exe
弹出ERROR消息框
  could not load optional dll adoceolddb31.dll,ADO will not be available
  could not load optional dll adoxce31.dll,ADO will not be available

我复制的是C:/adocepb/setup/Data Access 3.1/Program Files/DataAccess31/DEVICE/x86/i486/CE/RETAIL下面的,我是P4的CPU



# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-03-20 17:38 zuilang
re yujia120,我不是很记得了,你可以每个路径下面的都试一下嘛


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-03-20 20:32 yanzi
怎么通过hr 的返回值来查错啊
我不知道啊


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-03-20 20:33 yanzi
怎么通过hr 的返回值来查错啊
我不知道啊


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-03-20 21:57 zuilang
得到返回值然后到帮助里面根据这个值查看一下出错信息,或许你会从出错信息里面得到启发


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-03-24 11:24 yangwen
请问在Standard SDK下用哪个dllregister.exe注册DLL,怎么都反应不是一个有效的WIN CE程序,盼望解答


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-03-24 17:32 yangwen
adocedb30.dll为什么无法注册,其他DLL都能注册


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-03-24 18:08 zuilang
adocedb30.dll好像不是必须的吧?看看上面的
File                          Requirement
绕弯路的最大原因是没有看文档,或者看了也不仔细,或者英文水平有限,不能很好的理解。其实选择微软的东西开发有一个很大的好处就是:文档齐全!



# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-03-27 09:08 yangwen
按照要求注册DLL后,执行hr = m_pADOCEConn->Open(TEXT("My Documents//exam.cdb"),TEXT(""), TEXT(""),MSADOCE::adOpenUnspecified);hr返回的值是-2146824443,请问如何解决,谢谢


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-03-27 16:53 yanzi
   我是在ARM板上开发关于数据库的程序,可是这和ppc上有区别
  有人开发过ARM板的数据库程序吗,如果有的话请联系我,好吗
我的qq是:99980861


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-03-28 09:20 yanzi
  书童 Macintosh 所说的 DLL文件,也就是来自微软的adocepbzip安装包,我怎么不能安装,我是pb4.2  EVC4.0
   需要修改什么才能安装?


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-03-28 11:06 yangwen
我用的WIN CE 5.0的模拟器,注册ADOCE30.DLL后,在CE注册表中显示的ADOCE.Connection.3.0的CLSID是113033F9—F682—11D2—BB62—00C04F680ACC,ADOCE.Record.3.0的CLSID是113033F8—F682—11D2—BB62—00C04F680ACC。但是程序中定义的分别是const IID IID__Connection = {0x113033DE,0xF682,0x11D2,{0xBB,0x62,0x00,0xC0,0x4F,0x68,0x0A,0xCC}};const IID IID__Recordset = {0x113033F6,0xF682,0x11D2,{0xBB,0x62,0x00,0xC0,0x4F,0x68,0x0A,0xCC}};
两者不一样,请问执行hr = m_pADOCEConn->Open(TEXT("My Documents//exam.cdb"),TEXT(""), TEXT(""),MSADOCE::adOpenUnspecified)后hr返回的值是-2146824443跟这有关系吗?比较急,弄了好几天了,非常感谢!



# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-03-28 12:34 yanzi
    我也出现了和你一样的问题,调用这个m_pADOCEConn->Open就出错,我也不知道该怎么办?


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-03-28 14:25 yangwen
根据这个错误类型,模拟器必须是WINCE 3.0下,会不会跟注册的ADOCE30.DLL有关?我这个ADOCE30.DLL是从 C:/Windows CE Tools/wce300/Pocket PC 2002/controls/x86下拷贝来的,感觉不对,因为这个ADOCE30.DLL是对应Pocket PC 2002,而不是我要的对应WINCE 5.0的模拟器,但找不到与此对应的ADOCE30.DLL


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-03-28 17:11 yangwen
楼上的镇静剂也曾碰到类似问题,不知道解决没,老兄解答一下吧,帮帮初学者吧!


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-03-28 17:40 yujia120
zuilang,您好:
我在编译使用VoAdo的 Sample时,用Use MFC dll时编译可以成功,但选择静态发布时就报错,我确定是设置选项的问题,因为开始我自己写的程序加入必要头文件,连DEBUG版都是这种错误,这次在示例代码上改DEBUG通过了,可是RELEASE没有.信息如下:
请教如何解决,谢谢!

--------------------Configuration: CEtest - Win32 (WCE ARMV4I) Release--------------------
Compiling...
vorecordset.cpp
Linking...
   Creating library ARMV4IRel/CEtest.lib and object ARMV4IRel/CEtest.exp
CEtestDlg.obj : error LNK2019: unresolved external symbol VariantInit referenced in function "public: int __cdecl CCEtestDlg::InitRecordSet(void)" (?InitRecordSet@CCEtestDlg@@QAAHXZ)
vorecordset.obj : error LNK2001: unresolved external symbol VariantInit
CEtestDlg.obj : error LNK2019: unresolved external symbol VariantClear referenced in function "public: class CString __cdecl CCEtestDlg::Test(struct tagVARIANT)" (?Test@CCEtestDlg@@QAA?AVCString@@UtagVARIANT@@@Z)
vorecordset.obj : error LNK2001: unresolved external symbol VariantClear
CEtestDlg.obj : error LNK2019: unresolved external symbol VariantCopy referenced in function "public: class CString __cdecl CCEtestDlg::Test(struct tagVARIANT)" (?Test@CCEtestDlg@@QAA?AVCString@@UtagVARIANT@@@Z)
CEtestDlg.obj : error LNK2019: unresolved external symbol SysFreeString referenced in function "private: void * __cdecl _bstr_t::Data_t::`scalar deleting destructor'(unsigned int)" (??_GData_t@_bstr_t@@AAAPAXI@Z)
CEtestDlg.obj : error LNK2019: unresolved external symbol VariantChangeType referenced in function "public: __cdecl _bstr_t::_bstr_t(class _variant_t const &)" (??0_bstr_t@@QAA@ABV_variant_t@@@Z)
CEtestDlg.obj : error LNK2019: unresolved external symbol SysAllocString referenced in function "public: class _bstr_t & __cdecl _bstr_t::operator=(unsigned short const *)" (??4_bstr_t@@QAAAAV0@PBG@Z)
vorecordset.obj : error LNK2001: unresolved external symbol SysAllocString
voconnection.obj : error LNK2019: unresolved external symbol CoCreateInstance referenced in function "public: int __cdecl CVOConnection::Initialize(void)" (?Initialize@CVOConnection@@QAAHXZ)
vorecordset.obj : error LNK2001: unresolved external symbol CoCreateInstance
voconnection.obj : error LNK2019: unresolved external symbol CLSIDFromProgID referenced in function "public: int __cdecl CVOConnection::Initialize(void)" (?Initialize@CVOConnection@@QAAHXZ)
vorecordset.obj : error LNK2001: unresolved external symbol CLSIDFromProgID
voconnection.obj : error LNK2019: unresolved external symbol CoInitializeEx referenced in function "public: int __cdecl CVOConnection::Initialize(void)" (?Initialize@CVOConnection@@QAAHXZ)
ARMV4IRel/CEtest.exe : fatal error LNK1120: 9 unresolved externals
Error executing link.exe.
CEtest.exe - 15 error(s), 0 warning(s)



# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-03-29 15:31 yangwen
standard sdk for windows ce 5.0到底可不可以用ADOCE实现对数据库的操作?


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-03-29 22:40 zuilang
最近很忙,无法一一回答大家的问题了,况且很多问题我也无法回答。因为安装opnet系统出现问题,把evc等删除了。对于"hr返回的值"的问题,我最多也只能到帮助里面查一下,然后把它翻译成中文给大家看。错误返回值就是这么用的。至于"是否支持WIN CE 5.0"的问题,我也不清楚,可以查查文档。


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-03-30 09:09 yangwen
当我运行程序时,从EVC4.0的Remote Process Viewer里看到adocedb30.dll和adoce30.dll都在使用,但事实上我无法正确注册adocedb30.dll,看来程序都需要这两个DLL,但前者只是Load而不是Register,因此可能这就是打开数据库出错的原因所在,不知道这样理解是否正确?


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-04-07 15:56 wudong
为什么我执行midl.exe adoce31.idl时出现错误 cannot execute 'cl'


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-04-07 22:22 zuilang
to wudong:你安装了vc了吗?看看你的硬盘有没有cl.exe??  


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-04-12 10:08 wudong
问题已经解决,现在能在evc4里正常编写数据库程序了。但我又发现个问题,我用open SQL语句的方法建立了一个表格,数据类型用int是正常的,但用float时显示是错误的,请问是adoce不支持float数据类型吗?


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-04-21 18:02 pikerbright
dll分X86和ARMV4两个不同版本的,不注意的话很容易出错的
unresolved external symbol一般都是lib库没有设置好的原因

艰苦的过程:在evc中使用ADOCE的前期准备 2006-05-13 16:43 wangshangy
我按照您的方法做了,很多操作都成功,比如注册DLL,但在生成两个.H文件的时候,MIDL只成功生成了adocec31.h,但是在编译adoce.idl的时候,出来一个错误:说是adocec31.idl文件找不到,但问题是该文件就在那个文件夹下啊,我尝试把他换到MIDL文件所在文件夹,还是没成功,是什么问题?渴望得到回答


#
re: wangshangy 2006-05-16 12:51 zuilang
我也不清楚是什么原因,让你失望了。或者你试一试交换一下顺序,先操作adoce.idl再操作adocec31.idl看看?对于idl我也是一窍不通


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-05-24 14:59 older
我的adoce31.idl和adocec31.idl始终无法解开,谁能将adoce31.h和adocec31.h传给我,不胜感激。谢谢。我的邮箱:xukangping@sina.com


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-05-27 09:15 Jackey_shao
对于楼上的朋友,请到下面的网页看看


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-06-11 21:48 robit
evc4+ado31在wince5.0中文版模拟器中成功运行.只要注册了相应的dll文件和把.cdb数据库文件和RegSvrCe拷贝到应用程序所在目录,执行应用程序即可.


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-08-11 18:26 Lionel12
麻烦各位大人,如何才能把regsvrce拷到模拟器下面啊 ,我是新手,想做adoce的开发,可是不知道如何把dll文件拷到模拟器下面注册,请高手指点迷津


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-08-29 10:08 chelsea
麻烦各位能不能把VOADO.zip这个给我发到邮箱里,我下载不下来
谢谢了!!


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-09-16 15:50 陌生人
我现在所有的东西都有,但是,我把程序,数据库文件及DLL文件放在PPC2003下,程序却不能运行?这是为什么?


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-11-07 15:18 bloodmary
//1,得到ADO连接对象对应ClassID
hr = CLSIDFromProgID(tsADOCE30ConnProgID, &tClsid );
if (FAILED(hr))
{
   return FALSE;
}
为什么返回false?
我没有设备,只是在evc4.0模拟器下调试


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-11-16 17:49 TT
我都按照你们说的装上了!
运行也没有问题!可是就是没有数据显示不知道为什么


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-11-16 17:50 TT
我都按照你们说的装上了!
运行也没有问题!可是就是没有数据显示不知道为什么


# 在evc中使用ADOCE的前期准备 2006-11-26 09:15 东东
我找不到设备的windows目录啊,到底要怎么拷到windows目录下,dllregister.exe应该放到什么地方进行运行,直接点击吗?希望有清楚的能够说得明白点,详细些。新手,在线急等,先谢谢啦,请大哥帮忙!!!  



# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2006-11-28 07:25 东东
怎么没有人愿意帮我啊,我是新手,找一好多资料,总是不成功啊,时间紧,帮帮我吧,谢谢啦


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2007-01-03 22:24 ShenHui
     非常感谢楼上各位的经验给了我很大的启发,使我在搭建环境的过程中少走了不少弯路。
    对于如何生成adoce31.h和adocec31.h文件,我觉得楼上各位说的还不够详细,我按照各位说的方法去做但是并不能生成.h文件,总是报错,经过多次实验,终于成功生成了这两个文件,下面说一下详细的流程:
    1)从网上下载adocepbzip.exe或者adocesdkzip.exe安装包;
    2)对于adocepbzip.exe,在其../setup/Data Access 3.1/Program Files/DataAccess31/INCLUDE目录下找到adoce31.idl和adocec31.idl文件,并将这两个文件拷贝至一个单独的文件夹中(当然如果你不想拷贝也可以),假设为C:/adoce/;
       3)如果你安装了VC,那么将你的Microsoft Visual Studio/VC98/Include目录下的OAIDL.IDL,OBJIDL.IDL,UNKNWN.IDL,WTYPES.IDL四个文件拷贝到C:/adoce/目录下;
     4)从命令行进入C:/adoce/目录下,并用midl命令分别对adoce31.idl和adocec31.idl文件进行编译。如果出现“midl不是内部命令”的错误信息,则多半是因为你没有将midl.exe文件的绝对路径设置在环境变量中。如果安装了VC,midl.exe文件位于你的Microsoft Visual Studio/VC98/Bin目录下,将这个路径设置为环境变量后,再进入C:/adoce/目录,执行命令即可生成.h文件了。
      5)如果你还是不能正确生成这两个头文件,请留下Email,我可以发给大家。


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2007-02-26 09:34 whelk
给我发一份Adoce31.h和adocec31.h  
Email:GDNanTian@163.com


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2007-03-09 14:45 yym
我的邮箱是maotouying--012@163.com
能给我发一份吗?我用命令行没有弄出来


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2007-04-05 22:17 曹传生
我试过了,都不行哦,请给我发一份Adoce31.h和adocec31.h,万分感谢!
Email:chuanshengcao@sina.com


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2007-04-07 18:30 zuilang
今天想做一份Adoce31.h和adocec31.h放在blog供大家下载的,但是时间隔太久了,电脑上都没有相关的东西了。


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2007-06-28 17:13 serena
我们现在使用的是成都英创的EM9000开发板,其中已经预装了正版的Windows CE5.0,开发过程中我们已经生成了Adoce31.h和adocec31.h,动态链接库也注册成功,但是仍报错,是否ADOCE的使用与硬件平台有关.


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2007-11-14 08:26 moom
我现在用evc4.0做开发想用数据库谁能给我发个源代码!!

学习中........



# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2007-11-14 08:29 成亮
我现在学WinCE开发用EVC4.0,谁能给我发个EVC中使用数据库的源代码!

谢谢!

学习中.....

我的邮箱:chengliang1527@126.com


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2007-11-30 22:21 licuidan
# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2007-01-03 22:24 ShenHui  


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2007-11-30 22:46 李翠丹
# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2007-01-03 22:24 ShenHui  


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2007-11-30 22:46 李翠丹
# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2007-01-03 22:24 ShenHui  


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2007-11-30 23:12 李翠丹
# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2007-01-03 22:24 ShenHui                                                                                按照SHENHU的说的去做,我在D目录先建立了一个adoce文件夹,然后把adocepb/setup/Data Access 3.1/Program Files/DataAccess31/INCLUDE目录下的文件全部放到D:/adoce目录下。然后把EVC里的oaidl.idl,objidl.idl,unknwn.idl,wtypes.idl,basetsd.h;cl.exe,cl.dll,MSPDB60.dll放到D:/adoce目录下.按照abc
微软的东西真烂,一个安装程序都弄成这么复杂


# re: 艰苦的过程:在evc中使用ADOCE的前期准备 2008-01-26 11:30 dee
建议看看这篇文章对你会有帮助的  饮马
hr = iADOCEConn->Open(_T("//My Documents//s.sdf"), L"", L"", MSADOCE::adOpenUnspecified);  
hr返回值为负数的朋友。
出现这种情况是可以尝试如下方法解决:
LPCTSTR   pcszProvider   =   _T("Provider   =   Microsoft.SQLSERVER.OLEDB.CE.2.0;data   source   =   //My Documents//test.sdf");    
  hr   =   m_pConnection->put_Provider(_T("CEDB"));    
  hr   =   m_pConnection->Open(lpDataSource,TEXT(""),TEXT(""),adOpenUnspecified);    
lpDataSource   =   _T("Provider   =   Microsoft.SQLSERVER.OLEDB.CE.2.0;data   source   =   //My Documents//test.sdf");

还是不行的话请确定安装的版本是否为Microsoft SQL Server CE 2.0,如不是或者将数据库版本换成此版本 或者更改Provider



已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页