找回密码
 注册
查看: 4864|回复: 0

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

[复制链接]
发表于 2011-5-25 21:03:42 | 显示全部楼层 |阅读模式
// [+] 09/25/09 (mm/dd/yy)8 A, ^3 H* V; @5 x% q( e3 l2 k

2 `: W  a: i* U/ g下载地址:3 o4 W) v% T- X: `
http://ttpublic.googlecode.com/files/x264-snapshot-20090216-2245.rar9 _+ b/ Z( @* U  L% E" t# K2 }/ p

2 X  o1 j+ R4 ~; h! g        总有人说最新的版本编译不过,搞的群、论坛里到处都是这种求助贴。建议斑竹把这个解决办法放到醒目的位置,以减少噪音。
1 h# f/ Y: g; Z: o% L8 a9 I' L
# v2 E6 {6 E* _- s; ]$ z; ]2 M科普开始$ J  A; M( e" ~! n! O

% T: ?0 {& D& k+ v9 I9 r2 b1、编译问题
# D& o; c4 T6 x由于MS的VS编译器对C99标准支持不好,不支持函数当中混合定义、声明变量。
1 q+ Q; [8 c: T  ~+ I0 |解决办法:在函数开头统一定义变量& Y+ E, P( ^9 V/ p3 b" T: n7 Z

0 I% R( P7 t- g" s. we.g
; F4 w- r/ c' ^3 ^5 _: o
6 s& y# m. K  Z  `$ G编译不过
8 k% e2 Z0 c; S  N& Ovoid funA() {                              void funA() {* u; y0 u# s' M( L
   int i,j;                                        int i,j,x;8 d: ?  i+ n$ e2 ~
   i = 0;            ========>         i = 0;
% t* I! @( l9 a4 S& d6 L# [2 H   int x = 0;                                   x = 0;
6 m+ L; f! j0 H" ?* t+ O}                                               }
4 l7 v/ g4 U# m& i6 \- F
% ^4 R/ U7 J# d+ h- Z+ e4 m2、链接问题8 v& W/ ?! x7 b! w4 g+ U
# R2 {2 d) \4 R2 A5 S1 \
libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_init,该符号在函数 _x264_encoder_open_75 中被引用. Z' e2 v& f9 A3 @% P
1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_is_empty,该符号在函数 _x264_encoder_encode 中被引用
% ?' K+ X% H. C+ k/ m; k/ A1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_get_frames,该符号在函数 _x264_encoder_encode 中被引用
+ _" Q6 `* O  g8 Z% r/ o1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_put_frame,该符号在函数 _x264_encoder_encode 中被引用
: c8 E0 J; i' D' {  q1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_delete,该符号在函数 _x264_encoder_close 中被引用3 D, {0 @: V) j; Q5 A" p
1>libx264.lib(analyse.obj) : error LNK2019: 无法解析的外部符号 _log2f,该符号在函数 _x264_mb_analyse_load_costs 中被引用
, c5 M! ?6 W9 _2 }6 R' Q& d* ~/ F! n+ j. t" Q
由于最近x264_param中新添了lookahead,而对应Win32工程是没有及时更新。
+ r5 o' y0 G$ K8 ]$ }把encoder/lookahead.c添加到工程里(和encode.c放在一起)即可。
6 d0 Y6 X2 Q7 k  V* \, [$ z4 G& c
/ F; T+ y5 Z4 n- G. u( p7 ~error LNK2019 unresolved external symbol _log2f0 E6 ~$ S8 t: d+ A0 n' K  W- z
另外,如果最后出现error LNK2019 unresolved external symbol _log2f,在osdep.h里定义一下log2f(不知道性能如何) :- ]3 b& p% B+ f4 M2 N
/ h: `% A6 |1 b! g
#ifdef _MSC_VER9 h4 d4 k6 _, e; M
#define inline __inline
' X; ^7 P4 c' K  `* F2 b5 L( r  {#define strcasecmp stricmp0 q: ~( p! ?% }" v: D, g
#define strncasecmp strnicmp
4 T: a  r, f7 z#define snprintf _snprintf
- z2 v0 k2 |9 f, B/ D$ x# o- C#define fseek _fseeki643 ?9 q* u" b. `/ \6 c% ?
#define ftell _ftelli64! [) i; |: Y% J# H
#define isfinite _finite
; }+ C# X% I/ J( k/ ]1 s#define strtok_r strtok_s
: C( o8 {2 b$ [2 G, B9 V) I#define _CRT_SECURE_NO_DEPRECATE& ~! g6 j/ k: Q
#define X264_VERSION "" // no configure script for msvc; e$ v& [/ ?0 h
#define log2f(x) (logf(x)*1.4426950408889634f)
1 M+ M; N( M' t+ Z# k#endif0 h7 S( X/ K1 p) }( K; G9 u

8 s9 ^: P& S3 S7 w% M3 J8 {) a5 d或 :) `! _5 M- ]6 j, R% L
#define log2f(x)     ((float)log((double)(x)))/(log((double)2)), z) x5 {% W1 ^4 s. T: E" {" `! x( E: X
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-10-1 20:37 , Processed in 0.019806 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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