enoone1 2016-01-13 08:03 采纳率: 0%
浏览 1669

VC++ COMM接口问题,本人小白一枚,临时需要COMM,所以求详细指导。

本人小白一个,临时需要COM接口用,网上照教程来COM接口编译报错,步骤如下
test.dll导出函数原型如下:
extern "C" __declspec(dllexport) int __stdcall cli (char*,char*);

想在VC或VS下用C++包装下这个导出函数为COM接口
目前尝试了VC 6.0环境下添加了ATL COM工程,添加了ATL简单对象并新增方法Ctest如下(通过VC向导):
STDMETHODIMP Ctest::cli(char lp_sServer, char *lp_sCmd, int *ReturnVal)
{
// TODO: Add your implementation code here
typedef int (__stdcall *Func)(char
,char*);
HMODULE hDll = LoadLibrary("test.dll");
Func test = (Func)GetProcAddress(hDll, "cli");
if( test( "test1","test2" ) != 0 )
{
return -1;
}
FreeLibrary(hDll);
return S_OK;
}

编译报错如下:
cannot instantiate abstract class due to following members:
c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1823) : while compiling class-template member function 'long __stdcall ATL::CComCreator >::CreateInstance(void ,const struct _GUID &,void
*
)'
c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1827) : warning C4259: 'long __stdcall Itest::cli(unsigned char ,unsigned char *,int *)' : pure virtual function was not defined
d:\dll\testcom\testcom.h(80) : see declaration of 'cli'
c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1823) : while compiling class-template member function 'long __stdcall ATL::CComCreator >::CreateInstance(void *,const struct _GUID &,void
*
)'
c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1827) : error C2259: 'CComObject' : cannot instantiate abstract class due to following members:
c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1823) : while compiling class-template member function 'long __stdcall ATL::CComCreator >::CreateInstance(void ,const struct _GUID &,void
*
)'
c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1827) : warning C4259: 'long __stdcall Itest::cli(unsigned char ,unsigned char *,int *)' : pure virtual function was not defined
d:\dll\testcom\testcom.h(80) : see declaration of 'cli'
c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1823) : while compiling class-template member function 'long __stdcall ATL::CComCreator >::CreateInstance(void *,const struct _GUID &,void
*
)'
Error executing cl.exe.

TESTCOM.dll - 2 error(s), 2 warning(s)

  • 写回答

3条回答 默认 最新

  • oyljerry 2016-01-13 10:17
    关注

    Com接口需要通过CoCreateInstance,QueryInterface来获取接口然后调用

    评论

报告相同问题?

悬赏问题

  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集