error LNK2001: unresolved external symbol "int g_cTemplates" ([email protected]@3HA)(转)

原文转自:http://blog.sina.com.cn/s/blog_639a2ad70101kpen.html

编译directshow若干问题的解决

1.安装好windows sdk,进入directshow目录下面的directshow\baseclasses,打开baseclasses.sln项目文件,编译,Debug目录下生成strmbasd.lib

2.新建vc filter工程,到工程属性->c/c++下添加包含目录,此步骤为添加directx头文件和directshow头文件,添加以下三个目录

Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\common

Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses

Microsoft SDKs\Windows\v7.1\Include

3.到 链接器->常规->附加库目录,添加对应的lib文件

Microsoft SDKs\Windows\v7.1\Lib

Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses\Debug

4.到 链接器->常规->附加依赖项,指定在上述第3步的目录内,添加哪些lib文件

添加如下两个文件

winmm.lib

"C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses\Debug\strmbasd.lib"

注意上面添加strmbasd.lib必须指定完整路径,否则系统会查找到系统平台下的strmbasd.lib,指定完整路径时必须两端加上双引号

5.源码文件里添加头文件

#include <streams.h>

编译,假如报错的话,见下:

编译directshow问题的解决

use vs2005 compiler directshow baseclasses has something error
1.ctlutil.h
modify as below:
  //operator=(LONG); 
COARefTime& operator=(LONG);

2.winutil.cpp
modify as below:
UINT Count; 
for (Count = 0;Count < Result;Count++) {

3.outputq.cpp
modify as below:
long iDone; 
for (iDone = 0;

4.wxdebug.cpp
modify as below:
//static g_dwLastRefresh = 0;
static DWORD g_dwLastRefresh = 0;

如果編譯程式出現
error LNK2019: 無法解析的外部符號 "int __stdcall lstrcmpWInternal
error LNK2019: 無法解析的外部符號 "int __cdecl wsprintfWInternal
error LNK2019: 無法解析的外部符號 "int __stdcall lstrcmpiWInternal
之類的錯誤
這是baseclasses編譯時有個設定要變更
就是project屬性->組態屬性->C/C++->語言之下的 "將wchar_t當作Built-in型別" 設為false
就可以解決上述link error的問題

如果編譯程式link strmbase.lib or strmbasd.lib出現以下的error
strmbasd.lib(dllentry.obj) : error LNK2001: unresolved external symbol "class CFactoryTemplate * g_Templates" ([email protected]@[email protected]@A)strmbasd.lib(dllsetup.obj) : error LNK2001: unresolved external symbol "int g_cTemplates" ([email protected]@3HA)
则重新修改baseclasses project的内容
CFactoryTemplate g_Templates[1] = { 
{      L"SystemClock", &CLSID_SystemClock, CSystemClock::CreateInstance}  //修改后; 
//    {&CLSID_SystemClock, CSystemClock::CreateInstance}   //原本的; 
}; 
另外在baseclasses工程的 vc Project->Settings...->C/C++的 preprocessor definitions:加入FILTER_DLL
然后重新编译 strmbase.lib and strmbasd.lib 即可

时间: 2024-10-08 20:08:36

error LNK2001: unresolved external symbol "int g_cTemplates" ([email protected]@3HA)(转)的相关文章

Google glog error LNK2001: unresolved external symbol &quot;__declspec(dllimport) int fLI::FLAGS_XXXX 错误的解决。

想在 windows 下使用 glog,使用类似 FLAGS_max_log_size 来设置参数,结果编译报错. 解决办法是在 项目属性 -> C/C++ -> Preprocessor -> Preprocessor Definitions 加入 GOOGLE_GLOG_DLL_DECL=. Google glog error LNK2001: unresolved external symbol "__declspec(dllimport) int fLI::FLAGS_

officeView.obj : error LNK2001: unresolved external symbol [email&#160;protected]

vc编译时出现 Linking... officeView.obj : error LNK2001: unresolved external symbol [email protected] Debug/office.exe : fatal error LNK1120: 1 unresolved externals Error executing link.exe. 的错误 原因是缺少lib文件 解决办法: 加上这句#pragma comment(lib, "shlwapi.lib."

error LNK2001: unresolved external symbol [email&#160;protected] SOCKET(转)

VC6.0下的错误信息: error LNK2001: unresolved external symbol [email protected] error LNK2001: unresolved external symbol [email protected] 错误原因:因为没有联接socket库ws2_32.lib. 解决办法:对于VC6.0要在porject/settings的link页面中object/library modules中添ws2_32.lib就可以了:对于Dev-C++同

LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main

在创建MFC项目时,如果没有设置好项目参数, 就会在编译时产生很多连接错误, 如我今天遇到的: LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main 解决方法: 控制台项目要使用windows子系统, 而不是console, 设置:[Project] --> [Settings] --> 选择"Link"属性页,在Project Options中将/subsystem:console改成/

(转载)浅析error LNK2001: unresolved external symbol &quot;public: __thisc...

学习VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于 编程者来说,最好改的错误莫过于编译错误,而一般说来发生连接错误时, 编译都已通过.产生连接错误的原因非常多,尤其LNK2001错误,常常使人不 明其所以然.如果不深入地学习和理解VC++,要想改正连接错误LNK2001非 常困难. 初学者在学习VC++的过程中,遇到的LNK2001错误的错误消息主要为: unresolved   external   symbol   “symbol”(不确定的外部“符号”). 如果连接程

VC6.0 error LNK2001: unresolved external symbol _main解决办法

学习VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于编程者来说,最好改的错误莫过于编译错误,而一般说来发生连接错误时,编译都已通过.产生连接错误的原因非常多,尤其LNK2001错误,常常使人不明其所以然.如果不深入地学习和理解VC++,要想改正连接错误LNK2001非常困难. 初学者在学习VC++的过程中,遇到的LNK2001错误的错误消息主要为: unresolved external symbol "symbol"(不确定的外部"符号").

error LNK2001: unresolved external symbol &quot;public: __thiscall ControllerInterface::ControllerInterface(class QObject *)&quot; ([email&#160;protected]@[email&#160;protected]@@@Z) downloadcontroller.obj

前几天刚遇到这个问题,但是今天再碰到就又要思考怎么解决.这次特别记录一下,以防下次碰到再手足无措: 1.看到这个报错第一感觉LNK关键字,表示连接错误,这种错误有几个可以下手的点 1)函数声明和定义是否有对应实现: 2)moc文件是否存在,是否需要重新生成然后添加: 3)基类的构造函数还是要自定义,尤其要注意参数列表,今天的问题就是参数列表不对引起的: 原文地址:https://www.cnblogs.com/wzxNote/p/8715671.html

error LNK2001: unresolved external symbol __endthreadex,unresolved external symbol __endthreadex

如果你在链接过程中收到错误信息 "_beginthreadex is undefined",意思是你误用了单线程版的 runtime library .你必须改用多线程版本. 1:打开"Project"菜单--〉"Setting"菜单项--〉General选项卡在Microsoft Fountion Classes:中选择:Use MFC in Static Library. 2:再在C/C 选项卡中的在Category中选择Code Gener

OpenCv error :unresolved external symbol(链接库没有加上)

Error 如下:Linking...: error LNK2001: unresolved external symbol _cvDestroyWindow: error LNK2001: unresolved external symbol _cvLoadImage: error LNK2001: unresolved external symbol _cvReleaseCapture: error LNK2001: unresolved external symbol _cvRelease