继续:
我把/mingw/include/objbase.h中的
STDAPI DllGetClassObject(REFCLSID,REFIID,PVOID*);
STDAPI DllCanUnloadNow(void);
定义注释掉。
然后把程序中的
两个函数定义都改为
extern "C" HRESULT __cdecl ...
编译结果去除了dll中的@现象
使用regsvr32 也能够注册/删除 编译的dll,但注册后存在问题:
1.注册表中的InprocServer32 Default值为"C:\WINDOWS\system32\regsvr32.exe",而不是正常的"C:\cmpnt.dll"
2.手工修改Default值后,程序运行时出现异常。但CoCreateInstance成功,获取接口也成功。
再继续研究。