登录
首页 嵌入式系统 微软嵌入式
回帖 发帖
正文

主题:vs2005+wince6.0 ATL智能设备项目问题

点击:1324 回复:0

问题详细描述
Vs2005+wince6.0

1.我新建了一个ATL智能设备项目addcom。

2.然后在addcom中添加了ATL简单对象add,出现如下错误:
error C2039:’UpdateRegistry’: is not a member of ‘Cadd’
error C2065:’UpdateRegistry’: undeclared identifier
错误均指向add.h的最后一行
OBJECT_ENTRY_AUTO(__uuidof(add), Cadd)
3.我将add.h中的
#ifndef _CE_DCOM
DECLARE_REGISTRY_RESOURCEID(IDR_ADD)
#endif
改为
DECLARE_REGISTRY_RESOURCEID(IDR_ADD)
调试成功。
4.在addcom.idl中的
interface Iadd : IDispatch{
};
添加代码变成
interface Iadd : IDispatch{
[id(1), helpstring("method iadd")] HRESULT iadd([in]int a, [in]int b, [out]int * c);
[id(2), helpstring("method isub")] HRESULT isub([in]int a, [in]int b, [out]int * c);
};
5.在add.h中进行声明
public:
STDMETHOD(isub)(int a, int b, int * c);
STDMETHOD(iadd)(int a, int b, int * c);
6.在add.cpp中实现
STDMETHODIMP Cadd::iadd(int a, int b, int *c)
{
// TODO: Add your implementation code here
*c = a + b;
return S_OK;
}
STDMETHODIMP Cadd::isub(int a, int b, int *c)
{
// TODO: Add your implementation code here
*c = a - b;
return S_OK;
}
调试成功,生成addcom.all。
7.新建了一个基于对话框的MFC智能设备应用程序testcom

①把addcom.dll拷贝到testcom根目录下面
②在stdafx.h中添加:
#import "addcom.dll" no_namespace
③按钮响应函数中添加如下代码:
CoInitialize(NULL);
CLSID clsid;
CLSIDFromProgID(OLESTR("addcom.add"),&clsid);
CComPtr padd;//智能指针
padd.CoCreateInstance(clsid);
if(padd==NULL)
{
MessageBox(_T("wrong"));
return;
}
   int a=90;
int b=10;
int c,d;
padd->_Iadd(a,b,&c);
padd->isub(a,b,&d);
CString result;
result.Format(_T("结果:+%d;-%d."),c,d);
MessageBox(result);
padd.Release();
CoUninitialize();
④运行结果 输出 wrong
为什么呢?
能给一个调用成功的ATL智能设备项目和MFC智能设备项目吗?
附件:
[本地下载]
附件:
[本地下载]
G:\\问题\\1.jpg
10-08-27 15:12

工控新闻

更多新闻资讯