EVC编写的程序WiNCE6.0上不能运行问题请教?

firehood 2010-05-14 01:31:43
最近将wince5.0升级到wince6.0,发现以前在EVC下编写的mfc应用程序在wince6.0上不能运行,
尝试将Program Files\Microsoft Visual Studio 8\VC\ce\Dll\armv4I目录下几个跟MFC相关的DLL导入到系统windows目录(网上看帖子说是PB6.0对MFC不支持),重新运行mfc程序依然打不开。
请问各位仁兄如果想在wince6.0上运行的话,是不是以前EVC下开发的mfc程序得重新在VS2005下开发?
还有一个问题:
我以前在EVC下通过WCE ATL COM AppWizard工程编写的com组件在WINCE6.0下也无法注册成功,用regsvrce注册会弹出Loadlibray("XX.dll") failed GetLastError returns 7e 的错误提示(我检查了文件路径都没错)。
然后我打算在VS2005下重新开发这个COM 组件,于是我新建了一个ATL 智能设备项目的工程,然后添加一个ATL Simple Object和方法,可编译后出现如下错误:
C2039: 'UpdateRegistry': is not a member of 'CCERemoteMonitor'
错误指向的是OBJECT_ENTRY_AUTO(__uuidof(CERemoteMonitor), CCERemoteMonitor)这句.
这是什么原因呢?请问我该如何解决?谢谢大家!


...全文
1496 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
简单并快乐着 2013-01-31
  • 打赏
  • 举报
回复
是的,这个问题很奇怪。
firehood 2010-05-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 rattlerattle 的回复:]
“CCERemoteMonitor”我在MSDN上面没找到这个项,是自己写的吗?
看上面的错误提示是UpdateRegistry不是CCERemoteMonitor的成员,楼主检查一个CCERemoteMonitor的定义申明,找找是否有UpdateRegistry这个成员
[/Quote]
CCERemoteMonitor是我添加的一个COM对象,是通过ATL向导添加的,代码是自动生成的.现在还没为改对象添加方法,一编译就出现上述问题。错误指向的是错误指向的是OBJECT_ENTRY_AUTO(__uuidof(CERemoteMonitor), CCERemoteMonitor)这句.
91program 2010-05-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 domworldjohn 的回复:]
在WINCE5.0操作系统上,DLL可以动态链接,但是在WINCE6.0上面,DLL必须静态链接,并且要把相应的DLL拷贝进去,否则会出错
[/Quote]

这样就不对了!

谁说CE6.0上的DLL必须静态链接???
IT挖矿工 2010-05-14
  • 打赏
  • 举报
回复
“CCERemoteMonitor”我在MSDN上面没找到这个项,是自己写的吗?
看上面的错误提示是UpdateRegistry不是CCERemoteMonitor的成员,楼主检查一个CCERemoteMonitor的定义申明,找找是否有UpdateRegistry这个成员
firehood 2010-05-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 rattlerattle 的回复:]
CE5与CE6是有些不同的,CE6支持的组件比CE5少,可能是你的程序中恰好包括了一些CE6不支持的组件,建议楼主将EVC的工程移植到VS2005上面试。以前我也出现过这种问题,试了很多方法都不能解决,最后移到vs05上面就解决了,否则修改起来的话会非常麻烦,祝楼主好运
[/Quote]
谢谢你的建议,我也打算直接将EVC的工程移植到VS2005上。
但第二个问题我将EVC下的WCE ATL COM AppWizard工程移植到VS2005下,
创建了一个ATL 智能设备项目,编译后会有C2039: 'UpdateRegistry': is not a member of 'CCERemoteMonitor'的错误,请问改如何解决呢?
domworldjohn 2010-05-14
  • 打赏
  • 举报
回复
在WINCE5.0操作系统上,DLL可以动态链接,但是在WINCE6.0上面,DLL必须静态链接,并且要把相应的DLL拷贝进去,否则会出错
IT挖矿工 2010-05-14
  • 打赏
  • 举报
回复
CE5与CE6是有些不同的,CE6支持的组件比CE5少,可能是你的程序中恰好包括了一些CE6不支持的组件,建议楼主将EVC的工程移植到VS2005上面试。以前我也出现过这种问题,试了很多方法都不能解决,最后移到vs05上面就解决了,否则修改起来的话会非常麻烦,祝楼主好运
firehood 2010-05-14
  • 打赏
  • 举报
回复
首先谢谢大家的回复!
[Quote=引用 2 楼 91program 的回复:]
应该是少了MFC的动态库, 以下是VS2008的示例.如果是VS2005,将相应的9换成8即可.
20>D:\Program Files\Microsoft Visual Studio 9.0\VC\ce\dll\ARMV4I\msvcr90.dll
20>D:\Program Files\Microsoft Visual Studio 9.0\VC\ce\dll\ARMV4I\atl90.d……
[/Quote]
我把\Program Files\Microsoft Visual Studio 8.0\VC\ce\dll\ARMV4I目录下所有的dll都拷入到WINCE6.0系统windows目录下,运行mfc程序还是打不开。是不是我定制内核的时候少添加了什么组件呢?
老人参 2010-05-14
  • 打赏
  • 举报
回复
帮你顶
wjcapple 2010-05-14
  • 打赏
  • 举报
回复
设置成静态链接库,再试一试看。如果仅仅考过去一个debug版本的话,会提示缺少组件的
91program 2010-05-14
  • 打赏
  • 举报
回复
应该是少了MFC的动态库, 以下是VS2008的示例.如果是VS2005,将相应的9换成8即可.
20>D:\Program Files\Microsoft Visual Studio 9.0\VC\ce\dll\ARMV4I\msvcr90.dll
20>D:\Program Files\Microsoft Visual Studio 9.0\VC\ce\dll\ARMV4I\atl90.dll
20>D:\Program Files\Microsoft Visual Studio 9.0\VC\ce\dll\ARMV4I\msvcr90d.dll
20>D:\Program Files\Microsoft Visual Studio 9.0\VC\ce\dll\ARMV4I\MFC90UD.dll
91program 2010-05-14
  • 打赏
  • 举报
回复
EVC开发的应用,是可以在CE6.0下运行的.不能运行,说明少了组件.

19,520

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧