|
|
// [+] 09/25/09 (mm/dd/yy)# w0 ]3 ]6 y" ]8 E7 O' P4 R
, |( b- }" E! z! d+ O8 R! z3 c
下载地址:
7 j" o, `# n* @8 D: r, f7 J$ r9 ^' ihttp://ttpublic.googlecode.com/files/x264-snapshot-20090216-2245.rar
2 f8 R2 u/ k" s' e4 K( M
0 Z0 L+ J- O; b. S 总有人说最新的版本编译不过,搞的群、论坛里到处都是这种求助贴。建议斑竹把这个解决办法放到醒目的位置,以减少噪音。
g) m6 ~; E! j7 r- B# ]2 O k" K5 g3 q
科普开始; H1 S+ \1 a8 i. d
. y: `6 c! ~1 G6 V/ a4 u1、编译问题/ T6 x) Y2 y8 U, ^ p. S5 B
由于MS的VS编译器对C99标准支持不好,不支持函数当中混合定义、声明变量。
4 ]! v7 ?3 j( C, i+ X6 q& @! o: H解决办法:在函数开头统一定义变量, S6 Q1 J+ b4 [( _2 L3 D
& T: W# q2 Z! V/ _' R, g$ e" q+ ge.g
\' I' F7 v- _# h( L4 t0 o
X# Z. ^* ~, b/ E编译不过
3 ?' V9 z8 H5 L9 i4 {2 O: Bvoid funA() { void funA() {7 c0 l$ N! D, N# @+ V, K; j
int i,j; int i,j,x;0 H9 O" ?+ w9 w3 t: Q {2 |- n
i = 0; ========> i = 0;
1 v; U6 G% i( H8 H+ N int x = 0; x = 0;
6 D% G* A' ^0 D* ?- i, ^& \} }
; h2 ~4 v: _% C b# f( L8 N; ^! U& K3 V
2、链接问题% Z1 C/ e) N' A, o$ e
# U) @3 d; g% N2 |" wlibx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_init,该符号在函数 _x264_encoder_open_75 中被引用4 U: \( }7 f% y
1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_is_empty,该符号在函数 _x264_encoder_encode 中被引用& E% [- k1 A: |# K3 O
1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_get_frames,该符号在函数 _x264_encoder_encode 中被引用: a$ r Q6 h7 `, J$ `4 P% N$ C. e- i% y
1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_put_frame,该符号在函数 _x264_encoder_encode 中被引用9 u4 K9 b/ e! B) V: X# z
1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_delete,该符号在函数 _x264_encoder_close 中被引用
/ C( ^: s' l. ?& k" ^4 j) U1>libx264.lib(analyse.obj) : error LNK2019: 无法解析的外部符号 _log2f,该符号在函数 _x264_mb_analyse_load_costs 中被引用
5 B1 t! p4 c# t& M6 G$ k% y: W% ~8 c7 i0 O5 @5 Z) I9 y
由于最近x264_param中新添了lookahead,而对应Win32工程是没有及时更新。 n# K' J3 d2 ?; e1 _8 z1 C1 o7 z
把encoder/lookahead.c添加到工程里(和encode.c放在一起)即可。! Z! @+ Q7 l: W' l1 m
, {* `1 N% T) k
error LNK2019 unresolved external symbol _log2f
( C) n: ] q& C7 u2 E6 s另外,如果最后出现error LNK2019 unresolved external symbol _log2f,在osdep.h里定义一下log2f(不知道性能如何) :) s, G+ d" n# T% s. l& Q* K a
: D( w6 P' i2 c2 g. t
#ifdef _MSC_VER
' v) W# k+ I, C6 F4 K( v#define inline __inline1 ]+ X3 r. H7 Z
#define strcasecmp stricmp5 `7 N# H; ^, F" D
#define strncasecmp strnicmp
$ V0 l5 Z \: U& W" n: b$ e( v#define snprintf _snprintf
5 O& H R+ D# A( m#define fseek _fseeki64$ }" s, E, i$ g) }
#define ftell _ftelli641 e( i0 u4 u( A4 G+ H* V
#define isfinite _finite6 t9 x }6 i+ [& z. J! O, P. r7 O
#define strtok_r strtok_s
3 D* j0 h, a# q8 n, r2 U#define _CRT_SECURE_NO_DEPRECATE7 F* v: S( g% A. I: o5 F9 G4 \
#define X264_VERSION "" // no configure script for msvc
7 o L, ]- u6 x0 {$ w( Z: H#define log2f(x) (logf(x)*1.4426950408889634f) X* q, v" @7 ]4 g4 L4 ]/ R3 U0 O
#endif
1 N0 T/ i4 R( v, s& _9 r: u
9 Z( w, [2 {( I( a2 F8 ^2 D' Y或 :$ u S1 F( `6 b% _5 u' r$ G
#define log2f(x) ((float)log((double)(x)))/(log((double)2))
, {1 g; @) _* |# ^% E7 P |
|