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

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

[复制链接]
发表于 2011-5-25 21:03:42 | 显示全部楼层 |阅读模式
// [+] 09/25/09 (mm/dd/yy)
: i, z/ P2 B& y/ }6 i$ W' |  F) X8 \% ?$ V& X6 i. J( b
下载地址:
- @& c8 W+ n9 w: s% z/ {http://ttpublic.googlecode.com/files/x264-snapshot-20090216-2245.rar
4 [  Y; i, z8 l5 @& m9 t; o5 N' ?( @( Z7 }5 f
        总有人说最新的版本编译不过,搞的群、论坛里到处都是这种求助贴。建议斑竹把这个解决办法放到醒目的位置,以减少噪音。+ N8 M1 _6 R! B$ S+ N" Y

: Y& Y# O4 K/ D& I0 u  @( b科普开始) Z8 P1 d; h2 E) K1 _2 ?& l/ f
/ H: j! `* V3 [. t
1、编译问题
1 H" N/ E& H1 g, k9 m由于MS的VS编译器对C99标准支持不好,不支持函数当中混合定义、声明变量。
2 f' a- L- \7 Z+ R4 T4 ~解决办法:在函数开头统一定义变量/ m3 M3 f/ j! G# G4 |% y9 K* A- }

/ x. n2 E0 y6 ee.g, v5 o, f( Q' X

! y# J! f1 o0 W& s$ D& a1 I1 x& G编译不过1 T1 k7 v# Q! E
void funA() {                              void funA() {
7 i( B1 c* I6 O% m, f# M* B3 @   int i,j;                                        int i,j,x;
8 ^) R# ?% H% r! H3 P   i = 0;            ========>         i = 0;8 p. F$ ]6 w# F
   int x = 0;                                   x = 0;4 N6 c, T& d7 Q: q8 Q
}                                               }
# J! v0 o0 o0 _% d) E% C) C. T. z- |! A' z! S; J7 D  a
2、链接问题. Y' w8 W  ^. v# ^# C
0 S# f- n& `' a% w
libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_init,该符号在函数 _x264_encoder_open_75 中被引用
) W" t9 c& N/ H$ ^: V1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_is_empty,该符号在函数 _x264_encoder_encode 中被引用1 ?3 `6 M9 r) @) S) S  l/ }7 |- `
1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_get_frames,该符号在函数 _x264_encoder_encode 中被引用
. D4 G( h* r0 X; {! k  l2 o1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_put_frame,该符号在函数 _x264_encoder_encode 中被引用1 y& b, i- v# ^( h. Y& {
1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_delete,该符号在函数 _x264_encoder_close 中被引用% b5 W2 g) u# p5 q: c  q
1>libx264.lib(analyse.obj) : error LNK2019: 无法解析的外部符号 _log2f,该符号在函数 _x264_mb_analyse_load_costs 中被引用
4 ]# y$ h, K, v9 y$ i/ Z7 b4 f* X* @2 e' ^/ l) R
由于最近x264_param中新添了lookahead,而对应Win32工程是没有及时更新。
: O5 U! w. b8 D' w/ K& x; i把encoder/lookahead.c添加到工程里(和encode.c放在一起)即可。
5 ]' X6 [2 o8 j: g) |1 L
2 ^( t% v: m" x. ~error LNK2019 unresolved external symbol _log2f. p# k/ h% P: {7 s1 z* L: y$ ]
另外,如果最后出现error LNK2019 unresolved external symbol _log2f,在osdep.h里定义一下log2f(不知道性能如何) :& y3 Y/ T2 l$ h' d/ M& x- M" m
) P3 l9 }% k) E4 K6 m
#ifdef _MSC_VER
6 F6 ^7 h3 s, t7 `  ~5 {+ ]#define inline __inline
5 D: b: n0 L  @4 q5 [$ {#define strcasecmp stricmp
9 Y3 D. J' \& R#define strncasecmp strnicmp, `+ V! W4 r+ _: k% p- B6 F, V5 \6 E
#define snprintf _snprintf$ X/ y3 w7 b2 ^& I
#define fseek _fseeki64
& A/ v$ u. p- c/ X#define ftell _ftelli64" |. y4 c1 X2 _! K2 F( z% b; x
#define isfinite _finite
: D+ J0 L" f5 A. Z2 E0 u1 y6 q0 _+ I#define strtok_r strtok_s$ V3 e! ~  m% ]# M
#define _CRT_SECURE_NO_DEPRECATE& M0 _1 U# r) ^+ A2 ~
#define X264_VERSION "" // no configure script for msvc6 ?2 e4 y$ i( t/ g; j$ K& j1 q' p
#define log2f(x) (logf(x)*1.4426950408889634f)
% Q: j. \3 Y  `0 D! t' u2 _#endif, F# O: r4 t7 N) M
9 ?5 j' q; w- P
或 :
: s, o7 Z' V" t% P#define log2f(x)     ((float)log((double)(x)))/(log((double)2))
* A6 e8 N: a  Y; S5 G: j
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-2 07:38 , Processed in 0.025531 second(s), 14 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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