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

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

[复制链接]
发表于 2011-5-25 21:03:42 | 显示全部楼层 |阅读模式
// [+] 09/25/09 (mm/dd/yy)
; ^3 T# Q" e/ t+ `4 X; C" U$ ~2 y
- f( q' F8 E+ ~" ?! v: K7 w下载地址:
# ?1 B  y/ o2 d/ p) l0 ~. vhttp://ttpublic.googlecode.com/files/x264-snapshot-20090216-2245.rar
/ j: J6 e) ~' X1 h$ Y- e2 Q( ]0 I1 w
        总有人说最新的版本编译不过,搞的群、论坛里到处都是这种求助贴。建议斑竹把这个解决办法放到醒目的位置,以减少噪音。0 r5 |" e1 ^* N
) }0 {# K4 v% O4 a& |6 n
科普开始
3 _$ A2 f, v  U2 R4 Z* U2 ~; w
! U  B' o2 D2 `1 X1、编译问题
( x8 D# D+ e6 \: u# A- z0 U由于MS的VS编译器对C99标准支持不好,不支持函数当中混合定义、声明变量。
  r1 D. p- C  v解决办法:在函数开头统一定义变量
. |: n) \: g9 C" R" G
5 o. {! l( _# pe.g
! p8 r. {7 S3 C
7 u6 \0 r2 N7 j编译不过
" C1 W' l! }  `# Yvoid funA() {                              void funA() {
2 J, b% z8 p; U4 m" A   int i,j;                                        int i,j,x;
9 ?6 l1 Y  e* P5 p% z/ x- M   i = 0;            ========>         i = 0;) b. Q; `/ X# g0 Y& v& E2 c0 y
   int x = 0;                                   x = 0;' |' k; R3 o. W  Q4 [2 M
}                                               }0 y+ D% ?* O+ _# v" L) e! O

* M1 v: m# c* D. i2、链接问题
. `  n0 L$ Y0 ^0 Q2 i( k- g
. ]3 M  E# K9 w' Qlibx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_init,该符号在函数 _x264_encoder_open_75 中被引用1 F6 V7 @, O5 c! F. Z
1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_is_empty,该符号在函数 _x264_encoder_encode 中被引用
) I/ t- B* P1 {2 b8 c3 f( f9 c, y  p1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_get_frames,该符号在函数 _x264_encoder_encode 中被引用9 v% I5 O- h' l
1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_put_frame,该符号在函数 _x264_encoder_encode 中被引用
. I; S; c' O+ K: b! T0 u1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_delete,该符号在函数 _x264_encoder_close 中被引用
0 ]: ]* f% G8 m/ K4 Z1>libx264.lib(analyse.obj) : error LNK2019: 无法解析的外部符号 _log2f,该符号在函数 _x264_mb_analyse_load_costs 中被引用2 q) r% x6 e, _! O

" F% E4 W% H. `3 P9 \0 N9 r由于最近x264_param中新添了lookahead,而对应Win32工程是没有及时更新。: F: D4 D* k3 L4 N$ J
把encoder/lookahead.c添加到工程里(和encode.c放在一起)即可。
" m. n& t1 N) g0 u# X1 g* O& M% f! ]% n: Y/ g" ~
error LNK2019 unresolved external symbol _log2f
. m5 |- c7 I' y" Z# ~, {9 b( M另外,如果最后出现error LNK2019 unresolved external symbol _log2f,在osdep.h里定义一下log2f(不知道性能如何) :
/ a* T" [' W/ ]+ F% ]9 L' y. Z4 p1 n& o* c3 H+ G6 o
#ifdef _MSC_VER
! \, w6 b* P7 t7 Q  H#define inline __inline
7 i# q" F- A2 v6 l#define strcasecmp stricmp
3 |& X" C$ k6 S5 g#define strncasecmp strnicmp
6 R" m1 j0 D3 g. t" U% _, e#define snprintf _snprintf/ J# z  A$ k2 S$ l9 f
#define fseek _fseeki64
% _1 P5 C; d! T$ `/ ]: }, y#define ftell _ftelli646 @) {  Y% A# t6 u5 R) ]* c
#define isfinite _finite
1 l* u' w4 B: L- H#define strtok_r strtok_s
. m9 x' }- F) s7 K& y7 `#define _CRT_SECURE_NO_DEPRECATE3 s  }0 s6 I: S; J3 B; k6 R, r8 Z1 D
#define X264_VERSION "" // no configure script for msvc
: [2 w4 Q+ u5 V2 o. B! ]#define log2f(x) (logf(x)*1.4426950408889634f)
" [0 u9 G0 `5 x- F. q& L#endif
- m9 q+ r0 g5 E( s  i2 h0 z% U. {
或 :7 l* K1 Y1 b5 _* k9 x4 l
#define log2f(x)     ((float)log((double)(x)))/(log((double)2))0 o, a9 V8 l. ^$ j$ `. z- d; i6 j% \
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-18 14:15 , Processed in 0.017021 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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