当前位置: 代码迷 >> 多媒体/流媒体开发 >> filter的COM接口解决方法
  详细解决方案

filter的COM接口解决方法

热度:9958   发布时间:2013-02-26 00:00:00.0
filter的COM接口
我想问个问题啊
  我把一个sourcefilter编译了,程序不想注册
想通过COM形式,写个函数接口 ,直接通过dll调用sourcefilter,返回filter实例

我这样写对吗?C#调
C/C++ code
extern "C" CAsyncFilter* __declspec(dllexport) ReturnFilter(HRESULT *phr)           //105行{                                                                                    //106行CAsyncFilter *casync = new CAsyncFilter(NULL,phr);return *casync;} 

在加上这个之前,filter编译、graphedit运行时没有问题的
  可是加上之后
2>.\asyncflt.cpp(105) : error C2059: 语法错误 : “__declspec(dllexport)”
2>.\asyncflt.cpp(106) : error C2143: 语法错误 : 缺少“;”(在“{”的前面)
2>.\asyncflt.cpp(106) : error C2447: “{”: 缺少函数标题(是否是老式的形式表?)

------解决方案--------------------------------------------------------
不用注册COM可以调用,QQ,暴风都是没注册调用
使用LoadLibary加载,
GetProcAddress获取到DllGetClassObject地址,
之后得到IClassFactory然后调用CoCreateInstance创建对象,获取对应的接口指针
  相关解决方案