vs2017 生成com 并 调用

尴尬,昨天开始学习COM, 因为项目采用COM技术进行各模块功能开发。按好几篇博客折腾无果,不知道是环境没有装好还是咋了,在选择添加函数时老是空白,啥都没法选择。还好,现在走通了最基本的。过程如下:

新建项目->ATL (选项暂时不研究,我也搞不懂)然后就有了 Tcom TomPS(暂时也不知道PS是啥,先忽略)



然后在资源管理窗口,点右键,添加新建项目,选择ATL 



然后就有了 xxoo.h 和cpp文件。

正常情况,按各大神的博客,就在类视图里面添加方法就该可以。但是我的环境里面,就如下:


就算点, 后面如下:


。 折腾很久,以为是vs哪个模块没装好。 最后放弃了。

然后通过有些博客里提到 对.idl的改写 添加。(我的理解就是不用这个向导,自己添加,就像MFC

里面加消息相应函数一样)


然后XXOO.h 里面

STDMETHODIMP Aadd(LONG i, LONG* s);


STDMETHODIMP CXXOO::Aadd(LONG i, LONG* s)
{
// TODO: 在此处添加实现代码.
*s = 101;
return 0;

}

然后编译  注册dll 注册bat


然后写个测试代码

#include <iostream>
#include "..\\Tcom\Tcom_i.h"
#include "..\\Tcom\Tcom_i.c"
using namespace std;


int main( ) {
cout << "HHHHH JJJJJ KKKKK" << endl;
HRESULT hr;
IAB *pCom = NULL;
CoInitialize(NULL);
hr = CoCreateInstance(CLSID_AB, NULL, 1, IID_IAB, (LPVOID*)&pCom);
if (SUCCEEDED(hr))
{
LONG res(0);
pCom->Aadd(10,&res);
printf("2+3=%d\n", res);
}
CoUninitialize();
//这里是上面流程的测试com 模块 前面的是我开始做过的
cout << "HHHHH JJJJJ KKKKK 2" << endl;
//HRESULT hr;
IXXOO *pCom1 = NULL;
CoInitialize(NULL);
hr = CoCreateInstance(CLSID_XXOO, NULL, 1, IID_IXXOO, (LPVOID*)&pCom1);
if (SUCCEEDED(hr))
{
LONG res(0);
pCom1->Aadd(10, &res);
printf("pppp=%d\n", res);
}
CoUninitialize();


system("pause");
return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值