|
|
// [+] 09/25/09 (mm/dd/yy)
- U' e0 [+ |- G2 t; a& E
* F& C. V: p; g# r下载地址: e3 e& T$ {! Y
http://ttpublic.googlecode.com/files/x264-snapshot-20090216-2245.rar
7 W# f. a7 k% H, W9 m0 n
& t: n! M& r8 ?7 v* b1 @: p/ U3 ` 总有人说最新的版本编译不过,搞的群、论坛里到处都是这种求助贴。建议斑竹把这个解决办法放到醒目的位置,以减少噪音。
, d* M; y/ A8 u5 x" X% k: C
& l9 [" L9 u' l$ w: R科普开始$ k5 z7 f+ c/ K; W. d! Q/ E
% x# t J* o6 p. x& Q* A9 Z
1、编译问题0 m% o8 h) {; x" o% `% c' _/ {
由于MS的VS编译器对C99标准支持不好,不支持函数当中混合定义、声明变量。8 G2 ]! K. `+ {6 q* z5 a0 A3 |
解决办法:在函数开头统一定义变量
8 O1 p9 e: y+ F- v% ?. P% x" |& o' `" B& {+ S$ F5 u+ T
e.g0 e6 v1 L+ `8 }" e
: g8 X& v# m# F* O/ Z: N# U+ }+ e
编译不过
' V& U0 a+ k" Q6 n2 j* B; @$ zvoid funA() { void funA() {# _+ V# [% d/ u I" r
int i,j; int i,j,x;0 w2 a5 `( e4 F" L( H+ J0 Y" K
i = 0; ========> i = 0;# t% L( P- l4 _; [
int x = 0; x = 0;; j$ a4 k! z# w J/ t3 g! K: O
} }
( A: L; ^ @4 {( d4 U x5 n; b
* G5 a2 e# [8 `, E! `2、链接问题3 l$ [& H7 `* D8 c& z4 m5 o, `
1 o' b! `: `3 E4 e
libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_init,该符号在函数 _x264_encoder_open_75 中被引用
1 i* ]; l2 P5 X, ^! y3 E1 `2 |1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_is_empty,该符号在函数 _x264_encoder_encode 中被引用$ @$ g' S. T; ~% S# T
1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_get_frames,该符号在函数 _x264_encoder_encode 中被引用
$ p2 B. S& H U7 u$ |: P" i1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_put_frame,该符号在函数 _x264_encoder_encode 中被引用
) I6 [; L, _# P& Y1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_delete,该符号在函数 _x264_encoder_close 中被引用2 ~% h+ L- O% J/ S, k! S4 K/ W
1>libx264.lib(analyse.obj) : error LNK2019: 无法解析的外部符号 _log2f,该符号在函数 _x264_mb_analyse_load_costs 中被引用
2 A; R* s3 n l$ t- F
; X+ D% \) V. k1 M6 L由于最近x264_param中新添了lookahead,而对应Win32工程是没有及时更新。
2 l/ M7 M o) ]$ F把encoder/lookahead.c添加到工程里(和encode.c放在一起)即可。
9 S( p' R2 G. Q4 f% s/ F
; v, v- ?% W" y! j( aerror LNK2019 unresolved external symbol _log2f
3 `/ f3 m0 o }* [另外,如果最后出现error LNK2019 unresolved external symbol _log2f,在osdep.h里定义一下log2f(不知道性能如何) :0 Y% M" o1 F- w( Z; O0 \+ U0 T! Q
7 K! u2 M7 W: g5 `2 ^0 o
#ifdef _MSC_VER
, ?1 u! Z/ |, K6 L' h#define inline __inline
' C) X, z8 m/ v#define strcasecmp stricmp
6 i! U2 u4 P$ X7 E! d& _/ r#define strncasecmp strnicmp: m% M, f* e( c8 \ f: w
#define snprintf _snprintf" ~( ] n3 R9 Q- C
#define fseek _fseeki64
7 t8 V! T- K+ j9 j5 c% h5 u#define ftell _ftelli64
. N8 H4 ^4 B: G" [3 Q8 y#define isfinite _finite4 K% ?% D1 M2 O f. G
#define strtok_r strtok_s
% e% z9 I6 K8 p5 C0 c! N0 S9 i#define _CRT_SECURE_NO_DEPRECATE
* p, U) T0 X; F#define X264_VERSION "" // no configure script for msvc7 D: L& h7 L& G! G
#define log2f(x) (logf(x)*1.4426950408889634f)4 j3 N2 T* D, |% R0 q# ~+ d1 ]8 v
#endif
- k9 I p! Q2 ~- _( d+ I* C. g& |4 w* N: G1 F8 {
或 :
/ T0 s( \+ R8 l0 Y7 R: _#define log2f(x) ((float)log((double)(x)))/(log((double)2))
5 L5 \7 ]: z, z8 B; ^( }( |, o |
|