射手播放器编译错误解决方法(splayer)

  1. 编译时有几个处需要统一:
  字符集要统一,或者都为Unicode编码;
  MFC的使用,或者都选为在共享DLL中使用MFC;
  使用ATL,或者都选中动态链接到ATL;
  另外该安装的库要装上,如DirectX,路径要设置好。
  2. error LNK2019: 无法解析的外部符号 __imp__timeGetTime@0,
  error LNK2001: 无法解析的外部符号 __imp__timeGetTime@0
  error LNK2019: 无法解析的外部符号 __imp__timeSetEvent@20
  解决方法:在出错的项目添加头文件: Mmsystem.h,在引用库中添加:Winmm.lib
  3. error C2504: "ICommDlgBrowser2": 未定义基类 c:\program files\microsoft sdks\windows\v6.0a\include\shobjidl.h 6407 TreePropSheet
  错误 2 error C2504: "IFileDialogEvents": 未定义基类 d:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxdlgs.h 235 TreePropSheet
  错误 3 error C2061: 语法错误 : 标识符"FDE_SHAREVIOLATION_RESPONSE" d:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxdlgs.h 244 TreePropSheet
  错误 4 error C2061: 语法错误 : 标识符"FDE_OVERWRITE_RESPONSE"d:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxdlgs.h 246 TreePropSheet
  错误 5 error C2504: "IFileDialogControlEvents": 未定义基类 d:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxdlgs.h 249 TreePropSheet
  错误 6 error C2504: "ICommDlgBrowser2": 未定义基类 c:\program files\microsoft sdks\windows\v6.0a\include\shobjidl.h6407 sizecbar
  错误 7 error C2504: "IFileDialogEvents": 未定义基类 d:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxdlgs.h 235 sizecbar
  错误 8 error C2061: 语法错误 : 标识符"FDE_SHAREVIOLATION_RESPONSE" d:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxdlgs.h 244 sizecbar
  错误 9 error C2061: 语法错误 : 标识符"FDE_OVERWRITE_RESPONSE"d:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxdlgs.h 246 sizecbar
  错误 10 error C2504: "IFileDialogControlEvents": 未定义基类 d:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxdlgs.h 249 sizecbar
  错误 11 error C2504: "ICommDlgBrowser2": 未定义基类
  解决方法:(针对XP系统,其它系统作相应修改)
  有两个地方改一下一般可以解决这个问题:
  (1). 在StdAfx.h中加入如下两行(针对windows xp系统,不同系统不一样)
  #define _WIN32_WINNT 0x0501
  #define WINVER 0x0501
  (2). shobjidl.h 文件在vc6和vc9中都有,两个文件是有一些区别,使用vc9中就不会有问题,查找到VC9 中shobjidl.h所在位置,加入到包含路径中,如将
  C:\Program Files\Microsoft Visual Studio 9.0\VC\include 路径加入到包含路径中。
  (3). 引起这个问题的原因可能是如下
  http://www.rupeng.com/forum/thread-3214-1-1.html
  http://www.easewe.com/Article/document/879.htm
  4. 错误 25 error C2491: "FLAC__stream_encoder_set_do_mid_side_stereo": 不允许
  dllimport 函数的定义
  e:\workdirectory\splayer\src\filters\transform\mpa decfilter\libflac\src\libflac\stream_encoder.c 1515 MpaDecFilter
  错误 26 error C2491: "FLAC__stream_encoder_set_loose_mid_side_stereo": 不允许
  dllimport 函数的定义
  e:\workdirectory\splayer\src\filters\transform\mpa decfilter\libflac\src\libflac\stream_encoder.c 1526 MpaDecFilter
  错误 27 error C2491: "FLAC__stream_encoder_set_apodization": 不允许 dllimport 函
  数的定义
  e:\workdirectory\splayer\src\filters\transform\mpa decfilter\libflac\src\libflac\stream_encoder.c 1538 MpaDecFilter
  错误 28 error C2491: "FLAC__stream_encoder_set_max_lpc_order": 不允许 dllimport
  函数的定义
  e:\workdirectory\splayer\src\filters\transform\mpa decfilter\libflac\src\libflac\stream_encoder.c 1609 MpaDecFilter
  错误 29 error C2491: "FLAC__stream_encoder_set_qlp_coeff_precision": 不允许 dllimport 函数的定义
  e:\workdirectory\splayer\src\filters\transform\mpa decfilter\libflac\src\libflac\stream_encoder.c 1620 MpaDecFilter
  错误 30 error C2491: "FLAC__stream_encoder_set_do_qlp_coeff_prec_search": 不允许 dllimport 函数的定义
  e:\workdirectory\splayer\src\filters\transform\mpa decfilter\libflac\src\libflac\stream_encoder.c 1631 MpaDecFilter
  错误 31 error C2491: "FLAC__stream_encoder_set_do_escape_coding": 不允许 dllimport 函数的定义
  e:\workdirectory\splayer\src\filters\transform\mpa decfilter\libflac\src\libflac\stream_encoder.c 1642 MpaDecFilter
  错误 32 error C2491: "FLAC__stream_encoder_set_do_exhaustive_model_searc h": 不允许 dllimport 函数的定义
  e:\workdirectory\splayer\src\filters\transform\mpa decfilter\libflac\src\libflac\stream_encoder.c 1658 MpaDecFilter
  错误 33 error C2491: "FLAC__stream_encoder_set_min_residual_partition_or der": 不允许 dllimport 函数的定义
  e:\workdirectory\splayer\src\filters\transform\mpa decfilter\libflac\src\libflac\stream_encoder.c 1669 MpaDecFilter
  错误 34 error C2491: "FLAC__stream_encoder_set_max_residual_partition_or der": 不允许 dllimport 函数的定义
  e:\workdirectory\splayer\src\filters\transform\mpa decfilter\libflac\src\libflac\stream_encoder.c 1680 MpaDecFilter
  错误 35 error C2491: "FLAC__stream_encoder_set_rice_parameter_search_dis t": 不允许 dllimport 函数的定义
  e:\workdirectory\splayer\src\filters\transform\mpa decfilter\libflac\src\libflac\stream_encoder.c 1691 MpaDecFilter
  错误 36 error C2491: "FLAC__stream_encoder_set_total_samples_estimate": 不允许 dllimport 函数的定义
  e:\workdirectory\splayer\src\filters\transform\mpa decfilter\libflac\src\libflac\stream_encoder.c 1707 MpaDecFilter
  错误 37 error C2491: "FLAC__stream_encoder_set_metadata": 不允许 dllimport 函数的定义
  解决方法:一般是本库生成的选项与被调用项目的生成选项不一致造成,即第一点中提到的,都改成一致的一般可以解决问题。
  5. error LNK2005: _DllRegisterServer@0 已经在 cdxareaderD.lib(CDXAReader.obj) 中定义 cddareaderD.lib mplayerc
  错误 2 error LNK2005: _DllUnregisterServer@0 已经在 cdxareaderD.lib(CDXAReader.obj) 中定义 cddareaderD.lib mplayerc
  错误 3 error LNK2005: "int g_cTemplates" (?g_cTemplates@@3HA) 已经在 cdxareaderD.lib(CDXAReader.obj) 中定义 cddareaderD.lib mplayerc
  错误 4 error LNK2005: "class CFilterApp theApp" (?theApp@@3VCFilterApp@@A) 已经在 cdxareaderD.lib(CDXAReader.obj) 中定义 cddareaderD.lib mplayerc 错误 5 error LNK2005: "class CFactoryTemplate * g_Templates" (?g_Templates@@3PAVCFactoryTemplate@@A) 已经在 cdxareaderD.lib(CDXAReader.obj) 中定义 cddareaderD.lib mplayerc
  错误 6 error LNK2005: _DllRegisterServer@0 已经在 cdxareaderD.lib(CDXAReader.obj) 中定义 d2vsourceD.lib mplayerc
  错误 7 error LNK2005: _DllUnregisterServer@0 已经在 cdxareaderD.lib(CDXAReader.obj) 中定义 d2vsourceD.lib mplayerc
  ………………&h ellip;……………&hell ip;……………… ………………&he llip;……………&helli p;………………& hellip;……………&hel lip;……………&hellip ;………………&h ellip;……………&hell ip;……………… ………………&he llip;…
  解决方法:根据提示,确实是在多个项目中都定义,并且编译到目标文件,存细检查了一下,
  原因是出错的项目定义了一个REGISTER_FILTER预处理常量,将DllRegisterServer和DllUnregisterServer两个注册方法编译了进去,造成重复。如果是静态引用该项目,将REGISTER_FILTER预处理常量去掉,重新编译即可。
  6. error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: class
  std::basic_string,class std::allocator > &
  __thiscall std::basic_string,class
  std::allocator >::operator=(wchar_t const *)"
  (__imp_??4?$basic_string@_WU?$char_traits@_W@std@@ V?$allocator@_W@2@@std@@Q
  AEAAV01@PB_W@Z) lyriclibd.lib mplayerc
  error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: class
  std::basic_string,class std::allocator > &
  __thiscall std::basic_string,class
  std::allocator >::operator=(wchar_t const *)"
  (__imp_??4?$basic_string@_WU?$char_traits@_W@std@@ V?$allocator@_W@2@@std@@Q
  AEAAV01@PB_W@Z) lyriclibd.lib mplayerc
  error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: class
  std::basic_string,class std::allocator > &
  __thiscall std::basic_string,class
  std::allocator >::operator=(wchar_t const *)"
  (__imp_??4?$basic_string@_WU?$char_traits@_W@std@@ V?$allocator@_W@2@@std@@Q
  AEAAV01@PB_W@Z) lyriclibd.lib mplayerc
  后面还有很多类似的错误。
  解决方法:无法解析的外部符号有两种原因,一是头文件定义了但没有实现,二是没有包含库文件,以上错误的原因是C++的库文件没有包含,一般默认是包含了C++引用库的,可能是项目中忽略特定库将时其加入进去忽略掉了,存细检查忽略特定库中是否将C++引用库给忽略掉了,将其从忽略特定库中去掉。(一般是libcmtd.lib 、libcpmtd.lib 、msvcprtd.lib)
  7. an application has made an attempt to load the c runtime library without using a manifest
  解决办法:找到很多方法都不能解决问题,最后找到一个方法,即在stdafx.h中加入这一行即可解决问题:
  (vs2005)
  #pragma comment(linker, "\"/manifestdependency:type='Win32' name='Microsoft.VC80.CRT' version='8.0.50608.0' processorArchitecture='X86' publicKeyToken='1fc8b3b9a1e18e3b' language='*'\"")
  Vs2008
  #pragmacomment(linker, "\"/manifestdependency:type='Win32' name='Microsoft.VC90.CRT' version='9.0.21022.8' processorArchitecture='X86' publicKeyToken='1fc8b3b9a1e18e3b' language='*'\"")
  8. error LNK2019: 无法解析的外部符号 __imp____lc_codepage,该符号在函数 _mbrtowc 中被引用 mpcvideodecdu.lib
  解决方法:存细看了一下,项目mpcvideodec的附加依赖项中添加了两个引用库libgcc.a和libmingwex.a,这两个库不能这样直接引用,这两个文件在下载的源代码的lib目录下有存在,但是不能这样直接引用。使用 vs2008命令提示工具,转到libmingwex.a所在的目录,执行命令lib -remove:mbrtowc.o libmingwex.a,lib -remove:wcrtomb.o libmingwex.lib ,这样就生成文件libmingwex.lib,将libmingwex.lib文件加入附加依赖项即可。
  可以参考以下网页:http://ffmpeg.arrozcru.org/forum/viewtopic.php?f=1 &t=891
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值