在activex控件工程中使用directshow,编译时link错误的解决方法

王朝vc·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

错误为: strmbase.lib(dllentry.obj) : error LNK2001: unresolved external symbol "class CFactoryTemplate * g_Templates" (?g_Templates@@3PAVCFactoryTemplate@@A) strmbase.lib(dllentry.obj) : error LNK2001: unresolved external symbol "int g_cTemplates" (<A href="mailto:?g_cTemplates@@3HA">?g_cTemplates@@3HA</A>)

原因好像出在标准C上,与用户代码无关。

----------------------------解决方案--------------------------------------

打开XXX_XXCtl.h头文件,在程序开头的这些代码

#if !defined(AFX_OCX_MICPHONECTL_H__3388C6A4_9DE5_4D2F_9021_920EF2BF5CAB__INCLUDED_)

#define AFX_OCX_MICPHONECTL_H__3388C6A4_9DE5_4D2F_9021_920EF2BF5CAB__INCLUDED_

#if _MSC_VER > 1000

#pragma once

#endif // _MSC_VER > 1000

的下面加上以下代码即可。

/////////////////////////////////////////////////////////////////////////////

// DllGetClassObject

extern "C"

STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)

{

AFX_MANAGE_STATE(AfxGetStaticModuleState());

return AfxDllGetClassObject(rclsid, riid, ppv);

}

/////////////////////////////////////////////////////////////////////////////

// DllCanUnloadNow

extern "C"

STDAPI DllCanUnloadNow(void)

{

AFX_MANAGE_STATE(AfxGetStaticModuleState());

return AfxDllCanUnloadNow();

}

////////////////////////////////////////////////////////////////////////////

重新编译即可!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航