求助:ocx中使用DirectShow编译以后出现这个错误
LINK : warning LNK4098: defaultlib "LIBCMTD" conflicts with use of other libs; use /NODEFAULTLIB:library
strmbasd.lib(dllentry.obj) : error LNK2001: unresolved external symbol "class CFactoryTemplate * g_Templates" (?g_Templates@@3PAVCFactoryTemplate@@A)
strmbasd.lib(dllentry.obj) : error LNK2001: unresolved external symbol "int g_cTemplates" (?g_cTemplates@@3HA)
我在程序里面和COM里面使用一直没碰到这个问题,同样的代码只要在ocx里面使用就出现这个问题
请各位帮忙解答一下。
问题点数:100、回复次数:6Top
1 楼laiyiling(陌生人[MVP])回复于 2006-03-20 17:35:52 得分 10
g_cTemplates、g_Templates在哪里定义的Top
2 楼lixiaosan(小三)回复于 2006-03-20 17:39:49 得分 10
在project-》link里面没有加入strmbasd.lib库?Top
3 楼lookvc()回复于 2006-03-20 17:43:35 得分 0
加了strmbasd.lib
我在com和exe程序里面都是正常使用的
现在要转到ocx就不行了
定义都是在combase.h里面Top
4 楼yyhzpk(zpk)回复于 2006-03-21 09:14:08 得分 80
在XXXCtrl.h文件头加入以下声明即可:
extern "C"
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
return AfxDllGetClassObject(rclsid, riid, ppv);
}
/////////////////////////////////////////////////////////////////////////////
// DllCanUnloadNow
STDAPI DllCanUnloadNow(void)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
return AfxDllCanUnloadNow();
}Top
5 楼lookvc()回复于 2006-03-21 09:36:19 得分 0
yyhzpk(zpk) 你好
能说一下原因么?
谢谢Top
6 楼lookvc()回复于 2006-03-21 09:50:01 得分 0
做一个完整的结贴
http://codeguru.earthweb.net/forum/showthread.php?t=282715&page=2&pp=15
原因在这里面有Top




