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

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

[复制链接]
发表于 2011-5-25 21:03:42 | 显示全部楼层 |阅读模式
// [+] 09/25/09 (mm/dd/yy)  c; Q* f5 k: a/ N% B1 w2 ]

" b- u# T* {! t下载地址:
3 z3 @9 h1 ~5 E1 zhttp://ttpublic.googlecode.com/files/x264-snapshot-20090216-2245.rar
( R1 O* A1 A- o( A# u+ D
1 t5 M) Z) Y* G        总有人说最新的版本编译不过,搞的群、论坛里到处都是这种求助贴。建议斑竹把这个解决办法放到醒目的位置,以减少噪音。
8 r' ?- H) G; L. Z% Q2 ?6 H5 V! g" F% o. Y0 u& h2 f8 F9 N( L
科普开始
& j3 E" d: F. v4 W. h" k: k: q, u/ ]2 ~  |* q8 E
1、编译问题1 b. j* v. t1 x
由于MS的VS编译器对C99标准支持不好,不支持函数当中混合定义、声明变量。
6 D' [4 c. {  o% b解决办法:在函数开头统一定义变量
, Q8 |% o7 X2 u9 v2 G9 c$ \8 B
3 I, d5 `2 h; [1 I) a! l) le.g
7 v8 k% u; ^% ]; [7 _+ c4 L, [# _" B* D9 {
编译不过
& F- n5 \2 u; S( Y7 Jvoid funA() {                              void funA() {
, T& l1 r' u# a( m  Z+ M/ \   int i,j;                                        int i,j,x;. g7 h8 l& B3 u; T" j
   i = 0;            ========>         i = 0;
& U) |% h+ y- U; ]: |   int x = 0;                                   x = 0;
: U. S2 G4 R, @9 z" C1 x1 P4 p}                                               }) I% Y& A1 ~7 M7 I& G2 \! L4 k

/ W) i  [" @: ?1 [5 W2、链接问题$ s0 \7 B( v' P
' I: L$ m6 _) t7 m7 `5 ~
libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_init,该符号在函数 _x264_encoder_open_75 中被引用8 X; b' |: Q" Z
1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_is_empty,该符号在函数 _x264_encoder_encode 中被引用4 W1 H6 L/ o' H# _6 s3 r
1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_get_frames,该符号在函数 _x264_encoder_encode 中被引用
7 I# _; c' H4 k1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_put_frame,该符号在函数 _x264_encoder_encode 中被引用* T: f* x5 L9 F. ~( i: `
1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_delete,该符号在函数 _x264_encoder_close 中被引用
/ H% ?% [' f' _4 r7 E. t* Q% s1>libx264.lib(analyse.obj) : error LNK2019: 无法解析的外部符号 _log2f,该符号在函数 _x264_mb_analyse_load_costs 中被引用( }/ L/ }( O+ T1 W, {& }
& t. \- v6 }  W4 {$ y/ U
由于最近x264_param中新添了lookahead,而对应Win32工程是没有及时更新。
2 \" f0 Q. A" I! L把encoder/lookahead.c添加到工程里(和encode.c放在一起)即可。
5 n" O. f% @. W& n
* C* y0 C6 \$ g( i0 J* {error LNK2019 unresolved external symbol _log2f
) o2 {3 J) ^# L  c另外,如果最后出现error LNK2019 unresolved external symbol _log2f,在osdep.h里定义一下log2f(不知道性能如何) :
7 v0 u3 T: N9 V! X+ ^
7 [6 t1 G0 i  d3 s! `( f#ifdef _MSC_VER
" j. J7 F! |  V4 v8 X#define inline __inline
8 v) I: V8 B; J7 S! W#define strcasecmp stricmp0 @1 M  A) I7 J# `1 [
#define strncasecmp strnicmp" h' V/ {" {( Q2 D1 m/ u. [
#define snprintf _snprintf
4 v. R4 d0 |* v  s2 c; x#define fseek _fseeki64
' `% @" t' T$ {#define ftell _ftelli64
9 l$ J9 W+ D5 p& m/ z* }9 r#define isfinite _finite7 b8 V% j& _- p% O7 o
#define strtok_r strtok_s- P0 T4 C& c! S6 j$ S" E
#define _CRT_SECURE_NO_DEPRECATE7 F  O5 @3 l6 X
#define X264_VERSION "" // no configure script for msvc8 {, a8 i9 z2 T( j9 ?+ e4 h
#define log2f(x) (logf(x)*1.4426950408889634f)5 d# M2 C  }' N' v0 r
#endif8 R: X# |: Y- J9 S
7 z" c" t7 e; ?4 Z- _1 o7 z
或 :
' [6 A1 p# k) x/ `& N#define log2f(x)     ((float)log((double)(x)))/(log((double)2))8 ~) F  J1 y/ M& W
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-9-30 10:43 , Processed in 0.036607 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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