编译DirectShow程序时出现Link Error可以考虑的情况
2008-05-18 21:43
435 查看
最近在编译旧DirectShow SDK中的Contrast例子的时候出现了Link Error,花了几个小时,才解决掉这个问题,记录在这里,希望能给大家帮助。
一般情况下,参考下面两个网址应该可以解决掉大多数Link Error了:
http://topic.csdn.net/t/20041118/17/3565951.html
http://blogs.msdn.com/vsdteam/archive/2005/11/16/linker_error_lnk2019_lnk2001.aspx
不过我的情况比较特殊,我是下载了最新的
Windows SDK: 6.0.6001.18000.367-KRMSDK_EN.iso
和DirectX SDK: dxsdk_march2008.exe
然后用最新的baseclass的lib来编译旧的例子,而且更要命的是我还是在旧的SDK的结构(实际上也就是使用旧的SDK baseclass header)下编译例子,这样导致无论如何都会有
Link Error,在花了几个小时排除掉是环境配置的问题之后,我才意识到是旧的baseclass和新的baseclass之间的区别,更确切的说是新的baseclass使用了新的Header Annotations导致
编译器在生成函数声明的时候与以前有所不同,导致Link时无法找到对应的lib项目,所以出现了Link Error。
对于这种情况,其实最简单的办法就是把旧的例子拷贝到新SDK对应的目录下,然后编译去掉一些小的错误就可以了。
BTW: 如果新SDK有Contrast这个例子也就不用害的我搞了一夜了,sigh...
20080520 update:
http://www.directshow.cn/forum/viewthread.php?tid=3381&extra=page%3D1
1>CFilterASFWriter.obj : error LNK2019: unresolved external symbol "public: __thiscall CPosPassThru::CPosPassThru(char const *,struct IUnknown *,long *,struct IPin *)" (??0CPosPassThru@@QAE@PBDPAUIUnknown@@PAJPAUIPin@@@Z) referenced in function "public: virtual long __stdcall CFilterASFWriter::NonDelegatingQueryInterface(struct _GUID const &,void * *)" (?NonDelegatingQueryInterface@CFilterASFWriter@@UAGJABU_GUID@@PAPAX@Z)
这个问题咋一看就是字符集问题,可真拿来编译一下,还被绕进去了,幸好对VC的各项设置还算熟悉,最后还是解决了这个问题,居然还是个bug,有点怀疑的,不过不敢确认,还是最后找到了权威的回答,才确认。
一般情况下,参考下面两个网址应该可以解决掉大多数Link Error了:
http://topic.csdn.net/t/20041118/17/3565951.html
http://blogs.msdn.com/vsdteam/archive/2005/11/16/linker_error_lnk2019_lnk2001.aspx
不过我的情况比较特殊,我是下载了最新的
Windows SDK: 6.0.6001.18000.367-KRMSDK_EN.iso
和DirectX SDK: dxsdk_march2008.exe
然后用最新的baseclass的lib来编译旧的例子,而且更要命的是我还是在旧的SDK的结构(实际上也就是使用旧的SDK baseclass header)下编译例子,这样导致无论如何都会有
Link Error,在花了几个小时排除掉是环境配置的问题之后,我才意识到是旧的baseclass和新的baseclass之间的区别,更确切的说是新的baseclass使用了新的Header Annotations导致
编译器在生成函数声明的时候与以前有所不同,导致Link时无法找到对应的lib项目,所以出现了Link Error。
对于这种情况,其实最简单的办法就是把旧的例子拷贝到新SDK对应的目录下,然后编译去掉一些小的错误就可以了。
BTW: 如果新SDK有Contrast这个例子也就不用害的我搞了一夜了,sigh...
20080520 update:
http://www.directshow.cn/forum/viewthread.php?tid=3381&extra=page%3D1
1>CFilterASFWriter.obj : error LNK2019: unresolved external symbol "public: __thiscall CPosPassThru::CPosPassThru(char const *,struct IUnknown *,long *,struct IPin *)" (??0CPosPassThru@@QAE@PBDPAUIUnknown@@PAJPAUIPin@@@Z) referenced in function "public: virtual long __stdcall CFilterASFWriter::NonDelegatingQueryInterface(struct _GUID const &,void * *)" (?NonDelegatingQueryInterface@CFilterASFWriter@@UAGJABU_GUID@@PAPAX@Z)
这个问题咋一看就是字符集问题,可真拿来编译一下,还被绕进去了,幸好对VC的各项设置还算熟悉,最后还是解决了这个问题,居然还是个bug,有点怀疑的,不过不敢确认,还是最后找到了权威的回答,才确认。
相关文章推荐
- 模板函数(template function)出现编译链接错误(link error)之解析
- 关于JCreator在编译程序时出现的"Error:Invalid path"问题的解决方法
- ubuntu16.04下编译qt5。5程序出现:-1: error: [ui_firstpage.h] Error 1 错误的解决
- Python程序编译运行出现错误:IndentationError: unindent does not match any outer indentation level
- QT编译程序出现[ui_Widget.h] Error 1
- Windows下Sublime text 编译程序出现[Error 2] 的解决办法
- 如果你的程序没有改动,但系统已经出现问题了,请考虑以下情况。
- 基于jdk在windows 终端编译java 程序时输出中文时出现乱码情况
- KEIL编译STM32程序出现test.sct(7): error: L6236E: No section matches&nbs
- 关于Java 有package时 可以编译 但出现找不到或无法加载主类 的情况
- keil5 编译程序出现错误Error: L6411E: No compatible library exists with a definition of startup symbol __main
- ROS Kinetic编译旧版本程序出现 error: ‘shared_ptr’ in namespace ‘std’ does not name a type
- vs210编译sevenzip 7-zip出现link error opt:nowin98的错误解决办法
- Xcode编译时出现这样的情况:error: linker command failed with exit code 1 (use -v to see invocatio
- ROS Kinetic编译旧版本程序出现parse error at boost join
- MDK st-link下载STM32程序出现Internal command error和Error:Flash download failed. Target DLL
- keil5 编译程序出现错误Error: L6411E: No compatible library exists with a definition of startup symbol __main
- MDK st-link下载STM32程序出现Internal command error和Error:Flash download failed. Target DLL
- 在MS2010下直接编译PCL程序可能遇到的LINK ERROR
- 更新AndroidStudio后,运行原来可以运行的程序时,出现 Error running app: Instant Run requires 'Tools | Android | Enable A