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

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

[复制链接]
发表于 2011-5-25 21:03:42 | 显示全部楼层 |阅读模式
// [+] 09/25/09 (mm/dd/yy), T! Q3 ^8 b/ x! X0 y  g1 ~
4 A8 O6 z' Y/ U' Z, S
下载地址:
+ X; J3 M6 l+ l9 Ihttp://ttpublic.googlecode.com/files/x264-snapshot-20090216-2245.rar
( q3 b8 S, s$ v/ B
! @  r( r  J. D$ o0 n; H3 j5 B1 t/ A        总有人说最新的版本编译不过,搞的群、论坛里到处都是这种求助贴。建议斑竹把这个解决办法放到醒目的位置,以减少噪音。
! E4 ~) ?$ T/ N" |/ i! o2 E$ V" c! L6 p9 `% R
科普开始9 s1 G0 ?' @) f0 |
6 n9 o, g4 a# J& a* m2 C" b6 Z+ S
1、编译问题2 m" }5 w" U4 ]: \3 ]1 V1 C! X+ P
由于MS的VS编译器对C99标准支持不好,不支持函数当中混合定义、声明变量。
, ~) L: L6 q- k  P2 B$ j7 z解决办法:在函数开头统一定义变量
  n* B5 J, ?$ S2 h7 \# C9 C/ {0 r2 {$ X( e3 j8 ^& x* N3 y. h
e.g
, f$ W& O  H) ^( v4 q( h0 o( }/ c  i. J+ {
编译不过
) p1 {$ K+ r  v8 w$ {+ N" `! Tvoid funA() {                              void funA() {( y' @1 ?% S" t) o" ]; F
   int i,j;                                        int i,j,x;
% ]9 I8 j8 _  n( b- [" `% X" [   i = 0;            ========>         i = 0;
1 G, H" k5 R- H& W   int x = 0;                                   x = 0;, g% D6 O& U! A8 \! T  g0 @
}                                               }
0 m( v# w5 @& q& o1 Z7 s8 O: B$ a
# [- h7 F# p2 W% k2、链接问题
0 Z& w( b6 C9 b2 _# a$ k" n7 Q) n( `9 O) A+ c
libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_init,该符号在函数 _x264_encoder_open_75 中被引用+ `5 v$ ~+ ^/ F; X" R# l8 Z: _3 t
1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_is_empty,该符号在函数 _x264_encoder_encode 中被引用
. F6 R& H! \1 x/ u* Y1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_get_frames,该符号在函数 _x264_encoder_encode 中被引用; ?0 z' j: C- i: l& l. [
1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_put_frame,该符号在函数 _x264_encoder_encode 中被引用/ }5 d" k& n1 t/ ~& M8 J% z  B' b
1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_delete,该符号在函数 _x264_encoder_close 中被引用
( r  F4 J' d+ b! _9 H4 J# Q/ _8 W: f1>libx264.lib(analyse.obj) : error LNK2019: 无法解析的外部符号 _log2f,该符号在函数 _x264_mb_analyse_load_costs 中被引用
! R( ?0 o$ P$ }( t' E3 `
* I& }. i2 g/ ]; s9 z( I) E由于最近x264_param中新添了lookahead,而对应Win32工程是没有及时更新。/ L- k9 B% j4 b$ ~2 `# y- s
把encoder/lookahead.c添加到工程里(和encode.c放在一起)即可。
9 E. Z# ?) F2 P: E4 S1 q( S, ~( p6 E
2 Y" S8 S& q! p2 c. zerror LNK2019 unresolved external symbol _log2f3 {1 u+ [6 q+ s/ y
另外,如果最后出现error LNK2019 unresolved external symbol _log2f,在osdep.h里定义一下log2f(不知道性能如何) :2 }5 \5 X6 H* |1 Y! q

9 p( v4 `! T/ m& V7 b, m3 m#ifdef _MSC_VER, r& d# Q8 h8 v, h. |6 B0 g& e
#define inline __inline
) Y+ y; y2 D) n+ `#define strcasecmp stricmp0 T  `9 `! R% A
#define strncasecmp strnicmp
! k$ {2 t+ L( k+ E7 a" u+ g#define snprintf _snprintf, v# u* u8 o3 m1 K
#define fseek _fseeki643 P3 z, G1 \: e6 z3 \
#define ftell _ftelli64: M  U% j" A& j8 |% w1 x: X7 N
#define isfinite _finite. P/ L0 ?0 Q8 A' v. ~
#define strtok_r strtok_s
( T$ p- F/ q/ p+ D#define _CRT_SECURE_NO_DEPRECATE& l' d+ V2 S& {' {
#define X264_VERSION "" // no configure script for msvc
/ @$ M! }. L$ D4 C5 b#define log2f(x) (logf(x)*1.4426950408889634f)
$ V# q2 g$ M' F( |& b  D; R" \$ @( g9 {) j1 T#endif2 _2 G+ P: O% ?, `; ]
  b3 b2 h- X5 R" b2 `3 J7 Q: `5 K
或 :
4 V/ M, i1 r& \8 Q0 F#define log2f(x)     ((float)log((double)(x)))/(log((double)2))
7 J0 z7 y. I0 [5 y
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-13 19:02 , Processed in 0.016684 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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