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

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

[复制链接]
发表于 2011-5-25 21:03:42 | 显示全部楼层 |阅读模式
// [+] 09/25/09 (mm/dd/yy)
' ]" F- b- c8 U9 v- W% d8 X
' h* ^/ l) ~- U* t0 Y7 P: Y下载地址:
% L1 H0 w- x; e1 h  z( _7 }. Q1 [: Shttp://ttpublic.googlecode.com/files/x264-snapshot-20090216-2245.rar
9 a" ?  L" w+ i7 ?* X
! T7 b, U' E9 u6 l, K6 o        总有人说最新的版本编译不过,搞的群、论坛里到处都是这种求助贴。建议斑竹把这个解决办法放到醒目的位置,以减少噪音。
: m! |/ P4 p; @0 g7 k2 Q* g) M0 o
科普开始
% L& R1 h: N6 N; ~" `' t$ p  v6 v# [/ u% B; g* F
1、编译问题- r' e) o. g8 N, W0 u5 F
由于MS的VS编译器对C99标准支持不好,不支持函数当中混合定义、声明变量。; l1 `0 l3 F) `. ]4 N% v6 h
解决办法:在函数开头统一定义变量8 z. o" h) l9 }; F4 Y; h9 c, {

5 O9 e" b( D  J( n* i! z" ~e.g7 s2 i6 K% Z& ?( F
7 N- ?$ M4 l& h8 }6 H
编译不过
- }( V4 x+ P2 W6 K0 u6 `void funA() {                              void funA() {
! W) y  P" f# T8 s   int i,j;                                        int i,j,x;7 D! y" i' s* K
   i = 0;            ========>         i = 0;! ^8 Q' p: t  v3 W) U
   int x = 0;                                   x = 0;1 T! }* F# `# r( C
}                                               }0 x+ l! M' S, ~' E8 e
; O$ |& ~9 I. [' K9 d
2、链接问题) t  J, G9 K8 H4 P0 S
2 g1 O" E% Z& ?1 a# V
libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_init,该符号在函数 _x264_encoder_open_75 中被引用5 d3 k  w; Q1 Q0 ?
1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_is_empty,该符号在函数 _x264_encoder_encode 中被引用4 }& \6 m5 s- P, d
1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_get_frames,该符号在函数 _x264_encoder_encode 中被引用$ L+ y% O% \! |( F1 e
1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_put_frame,该符号在函数 _x264_encoder_encode 中被引用7 N+ m* J" z5 k
1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_delete,该符号在函数 _x264_encoder_close 中被引用
# v  b. `! n! N5 H+ o$ R$ }1>libx264.lib(analyse.obj) : error LNK2019: 无法解析的外部符号 _log2f,该符号在函数 _x264_mb_analyse_load_costs 中被引用
) L4 [+ q* W$ t5 L  Y3 }4 A
; U, x' @5 O  i) b: ~2 x由于最近x264_param中新添了lookahead,而对应Win32工程是没有及时更新。5 e3 K8 i* d. h: g4 @( ^
把encoder/lookahead.c添加到工程里(和encode.c放在一起)即可。
7 a+ z7 z+ S+ x: X( U) ]  Q
/ n1 ]7 d3 M- Y; {error LNK2019 unresolved external symbol _log2f
! w0 w# m' @  H  o; d另外,如果最后出现error LNK2019 unresolved external symbol _log2f,在osdep.h里定义一下log2f(不知道性能如何) :
% {9 s; I1 u' R4 q' P  e- M3 b
" {/ M2 g! G' N4 S* H3 L1 c#ifdef _MSC_VER) ?0 u! C2 r9 G
#define inline __inline
( @. b" M* D2 `% a0 k4 P; l9 {#define strcasecmp stricmp( H& [) K7 }1 u) Y% k* w9 B5 W2 Z
#define strncasecmp strnicmp+ G0 Q4 S5 ]7 c$ v  N
#define snprintf _snprintf) }7 c, n- ^9 L' i" J/ \6 R& o
#define fseek _fseeki64
. V1 Z. u2 k" Q#define ftell _ftelli64
+ `# P9 `  E( d- t# s* _#define isfinite _finite0 Z5 E& X3 y$ P# {: q  H
#define strtok_r strtok_s
* {& A- e, g5 N5 J3 B) x7 H#define _CRT_SECURE_NO_DEPRECATE
" _! P) R( Y+ @! ]0 T#define X264_VERSION "" // no configure script for msvc! ~: {7 ~  Y& Z
#define log2f(x) (logf(x)*1.4426950408889634f)
0 E  S  f! P& g1 C0 M#endif
$ b& E! i8 e- ]4 k5 Z: x7 \. G- [: I* I
或 :, E5 C* S; j, d' Z
#define log2f(x)     ((float)log((double)(x)))/(log((double)2))
' U) o3 q8 R& ~# B
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-8-8 23:21 , Processed in 0.033571 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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