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 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算