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来获取接口然后调用

    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)