找回密码
 注册
搜索
查看: 4233|回复: 0

VS2008下最新X264(svn 2009.0216)编译不过的解决办法(附编译通过+修改内存泄露版本)

[复制链接]
发表于 2011-5-25 21:03:42 | 显示全部楼层 |阅读模式
// [+] 09/25/09 (mm/dd/yy)
9 v7 h5 j2 O8 b7 ^7 A3 O1 M! _" r/ c) x
下载地址:
8 R6 |" C  _; r" z% W) Ahttp://ttpublic.googlecode.com/files/x264-snapshot-20090216-2245.rar
6 S: [* N5 J+ \7 X4 N6 j0 T7 z! H) @' N
2 z4 j; P: v0 [2 k, S9 z        总有人说最新的版本编译不过,搞的群、论坛里到处都是这种求助贴。建议斑竹把这个解决办法放到醒目的位置,以减少噪音。
/ |! W$ B' X( F6 e9 t( U+ R. C. l. t( {( Z' F6 w$ V6 a& R4 S
科普开始
# ]- o4 T9 L0 _: Q& z: J; i4 ~. o$ y. ~- r5 ~/ b) a6 v
1、编译问题
) s9 Q9 T; R5 g5 V9 t, `由于MS的VS编译器对C99标准支持不好,不支持函数当中混合定义、声明变量。6 ~# l7 M$ m( @3 P% [& J
解决办法:在函数开头统一定义变量6 v- X$ r7 G" E5 U+ X

8 C7 Q( V( s% z/ P2 d& re.g9 x( Y) B6 P$ p) }9 L

( w0 B" D2 ^0 k% ^' B. G4 h  {, ]& ~编译不过3 h. o. Q" g' P0 ~
void funA() {                              void funA() {3 H, G9 d% R  E
   int i,j;                                        int i,j,x;
* z* }* k. @2 h6 n   i = 0;            ========>         i = 0;
4 E4 E4 T9 C2 |   int x = 0;                                   x = 0;, t6 l) Z  l( g& L" t2 ?5 n9 ^
}                                               }
% c9 S8 t$ A, F$ K' Y6 m2 \' O2 `, |( W* t( e
2、链接问题9 ]( J+ G) K' l7 f) j7 V" k: n# a

' q# u% i, ?; P* K* u8 Blibx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_init,该符号在函数 _x264_encoder_open_75 中被引用
0 _! e% G; f* L( G% [( d. b  H5 E1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_is_empty,该符号在函数 _x264_encoder_encode 中被引用
. T, I: I8 A; H2 [' D% H1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_get_frames,该符号在函数 _x264_encoder_encode 中被引用/ D6 ~) Z' x8 K
1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_put_frame,该符号在函数 _x264_encoder_encode 中被引用9 S, s! ~! u% w: L
1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_delete,该符号在函数 _x264_encoder_close 中被引用
( B6 A0 e8 R8 u" k" d  a, w" d1>libx264.lib(analyse.obj) : error LNK2019: 无法解析的外部符号 _log2f,该符号在函数 _x264_mb_analyse_load_costs 中被引用4 y7 g, i: r0 y/ P
# t4 g) D$ D& D
由于最近x264_param中新添了lookahead,而对应Win32工程是没有及时更新。3 Z( I$ D4 z: t0 d! X
把encoder/lookahead.c添加到工程里(和encode.c放在一起)即可。
+ J  [* U9 m% @+ s/ U1 w: M7 @# A4 l2 s9 C1 w! h* Z) u4 e
error LNK2019 unresolved external symbol _log2f1 Q  f* I) O# k/ n4 j: o& A
另外,如果最后出现error LNK2019 unresolved external symbol _log2f,在osdep.h里定义一下log2f(不知道性能如何) :
; F- U- b: ^. P$ ?4 t) ~% Y  c
# b9 s4 T: \  t7 |* ?#ifdef _MSC_VER& g4 R& h7 ~! y
#define inline __inline$ F4 H/ h' F+ v2 P
#define strcasecmp stricmp# k  u! k/ u8 d3 _' U5 o
#define strncasecmp strnicmp
- Q; |- i! P  u  s, F. D#define snprintf _snprintf
3 ?- S  ]! A  C# s7 z#define fseek _fseeki64: J3 [9 ]+ D5 i4 j! ]
#define ftell _ftelli64: v& Z1 x! N4 r* K
#define isfinite _finite
3 ~" W$ j0 c( W/ e; g: }7 }#define strtok_r strtok_s% R# d6 C- i- u; P! z. T
#define _CRT_SECURE_NO_DEPRECATE
6 k( l5 d% T8 }& }* A) ^( N#define X264_VERSION "" // no configure script for msvc& G' C9 }* P# X& ~4 r/ k
#define log2f(x) (logf(x)*1.4426950408889634f)% r* s, n" j! m. a' X! @' q) P3 c
#endif
# f1 U7 N4 \' R# t! o# t
. \" I3 k) W- U) ?或 :# m( B2 x/ ~% [3 E! d+ Z
#define log2f(x)     ((float)log((double)(x)))/(log((double)2))
% ]- x0 K+ Q6 u& I" u, _
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|宁德市腾云网络科技有限公司 ( 闽ICP备2022007940号-5|闽公网安备 35092202000206号 )

GMT+8, 2025-8-8 20:22 , Processed in 0.033638 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表