我想问个问题啊
我把一个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创建对象,获取对应的接口指针