用户操作
[即时聊天] [发私信] [加为好友]
105694832ID:fxwzzbd
9961次访问,排名11574(1),好友0人,关注者0人。
fxwzzbd的文章
原创 46 篇
翻译 0 篇
转载 18 篇
评论 1 篇
最近评论
vvukqr:WoW Gold
文章分类
收藏
    相册
    多线程编程
    http://www.vckbase.com/document/viewdoc/?id=1704
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 webcam开发过程中的一些错误收藏

    新一篇: 关于LNK2001错误MSDN中的文章 | 旧一篇: 项目中一些常用函数

     
    1. 设置编译环境时,注意头文件的包含顺序,可以通过查看编译错误调整头文件顺序.
    2. 关于VS2005中无法识别CSource,应添加头文件streams.h,而dshow.h没有用.
    3. 改写Filter和Pin的构造函数.
    4. Pin需要继承的两个纯虚拟函数:DecideBufferSize和FillBuffer.如果没改写,将出现编译错误,注意仔细查看这些编译错误,以找到问题所在.
    5. DllCanUnloadNow和DllGetClassObject既然什么都不做,可否去掉?引起链接错误,不知怎么解决?居然是没有添加Strmbasd.lib引起的!我还以为是要自己实现呢!建议在开始写代码前就将几个需要的LIB添加到LINK中, Strmbasd.lib, Msvcrtd.lib, Winmm.lib,Strmiids.lib,注意在LINK中它们之间没有逗号,而是空格,否则会出现”can not find file “XXX.lib”的编译错误.
    6. 出现CLSID_的链接错误(unresolved CLSID_MyFilter)也可以通过添加头文件”initguid.h”解决,出现undefined symbol CLSID_MyFilter也是添加头文件”initguid.h”
    7. CLSID_NullRenderer需要包含头文件qedit.h,否则有编译错误.
    8. 关于链接错误error LNK2001: unresolved external symbol "unsigned int (__stdcall*ATL::g_pfnGetThreadACP)(void)"(?g_pfnGetThreadACP@ATL@@3P6GIXZA),必须将atlconv.h换成atlbase.h,且需将LINKER->Input->Ignore all default libraries选为No.两个都要改,改一个不行. atlconv.h for vs2003 atlbase.h for vs2005
    9. 关于can not open file MSVCRT.lib或MSVCRTD.lib或LIBCD.lib或LIBCMT.lib或LIBCMTD.lib或LIBC.lib的问题.需要Ignore specific library.
     
    /NODEFAULTLIB:library:Ignore Libraries    This option removes the specified library or libraries from the list of libraries it searches when resolving external references.
    /NODEFAULTLIB Ignore All Default Libraries    This option removes all default libraries from the list of libraries it searches when resolving external references.
     
    关于在WIN32程序中使用MFC中的CString和CFile等的问题.因为要使用MFC中的CString和CFile,,所以必须包含MFC的afx.h头文件(因为建立的不是MFC程序所以必须手工添加,如果是MFC程序已经包含必要的头文件,可直接使用CString和CFile等),因此我们在stdafx.h中添加afx.h,这里需要注意的是afx.h必须放在所有手工添加的头文件的前面,否则将出现下面的错误: fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>,例如,如果我们象下面这样包含就会出现上面的错误:
    #include "streams.h"
    #include "afx.h"
    应该改成:
    #include "afx.h"
    #include "streams.h"
    其实将系统和类库框架的头文件放在前面是一种很好的习惯.
     
    另外必须更改USE OF MFC选项,不能用use standard windows libraries,否则出现如下错误:
    fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]
     
    选择use mfc in a static library出现很多错误.奇怪!!!!!!!!然后添加 /FORCE:MULTIPLE,错误只剩下一个拉,如下: fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d],将C/C++中的runtime library改为Debug Multithreaded,出现如下错误error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup,再将LINKER->INPUT->Additional dependencies中输入的Msvcrtd.lib改为libcmtd.lib,问题解决.
    选择use mfc in a shared dll,只有一个错误,如下:
    error LNK2005: _DllMain@12 already defined in 3602Webcam.obj
    解决方法:添加 /FORCE:MULTIPLE
     
    原因:主要是单线程和多线程不匹配的问题.有的链接的是单线程LIB,有的链接的是多线程LIB,解决方法: /FORCE:MULTIPLE
    还有就是USE OF MFC的选择与RUNTIME Library选择不匹配的问题,两者是对应选择,下面是对应原则:
    Debug, shared library MFC applications - "Debug Multithreaded Dll."
    Release, shared library MFC applications - "Multithread Dll."
    Debug, static library MFC applications - "Debug Multithreaded."
    Release, static library MFC applications - "Multithreaded."
     

    发表于 @ 2008年01月20日 23:25:00|评论(loading...)|编辑

    新一篇: 关于LNK2001错误MSDN中的文章 | 旧一篇: 项目中一些常用函数

    评论:没有评论。

    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 105694832