zoukankan      html  css  js  c++  java
  • error LNK2001: unresolved external symbol "int g_cTemplates" (?g_cTemplates@@3HA)(转)

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

    编译directshow若干问题的解决

    1.安装好windows sdk,进入directshow目录下面的directshowaseclasses,打开baseclasses.sln项目文件,编译,Debug目录下生成strmbasd.lib
     
    2.新建vc filter工程,到工程属性->c/c++下添加包含目录,此步骤为添加directx头文件和directshow头文件,添加以下三个目录
    Microsoft SDKsWindowsv7.1Samplesmultimediadirectshowcommon
    Microsoft SDKsWindowsv7.1Samplesmultimediadirectshowaseclasses
    Microsoft SDKsWindowsv7.1Include
     
    3.到 链接器->常规->附加库目录,添加对应的lib文件
    Microsoft SDKsWindowsv7.1Lib
    Microsoft SDKsWindowsv7.1SamplesmultimediadirectshowaseclassesDebug
     
    4.到 链接器->常规->附加依赖项,指定在上述第3步的目录内,添加哪些lib文件
    添加如下两个文件
    winmm.lib
    "C:Program FilesMicrosoft SDKsWindowsv7.1SamplesmultimediadirectshowaseclassesDebugstrmbasd.lib"
    注意上面添加strmbasd.lib必须指定完整路径,否则系统会查找到系统平台下的strmbasd.lib,指定完整路径时必须两端加上双引号
     
    5.源码文件里添加头文件
    #include <streams.h>
    编译,假如报错的话,见下:

    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" (?g_Templates@@3PAVCFactoryTemplate@@A)strmbasd.lib(dllsetup.obj) : error LNK2001: unresolved external symbol "int g_cTemplates" (?g_cTemplates@@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 即可

  • 相关阅读:
    查看Linux内核版本命令
    身份证测试用
    aaa
    aaaaaaaaaaaaaaa
    https
    httpclient调用https
    共阴极数码管编码
    时间单位换算
    Java 中System里getProperty(something)
    VM arguments
  • 原文地址:https://www.cnblogs.com/happykoukou/p/7922060.html
Copyright © 2011-2022 走看看