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

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

[复制链接]
发表于 2011-5-25 21:03:42 | 显示全部楼层 |阅读模式
// [+] 09/25/09 (mm/dd/yy)# w0 ]3 ]6 y" ]8 E7 O' P4 R
, |( b- }" E! z! d+ O8 R! z3 c
下载地址:
7 j" o, `# n* @8 D: r, f7 J$ r9 ^' ihttp://ttpublic.googlecode.com/files/x264-snapshot-20090216-2245.rar
2 f8 R2 u/ k" s' e4 K( M
0 Z0 L+ J- O; b. S        总有人说最新的版本编译不过,搞的群、论坛里到处都是这种求助贴。建议斑竹把这个解决办法放到醒目的位置,以减少噪音。
  g) m6 ~; E! j7 r- B# ]2 O  k" K5 g3 q
科普开始; H1 S+ \1 a8 i. d

. y: `6 c! ~1 G6 V/ a4 u1、编译问题/ T6 x) Y2 y8 U, ^  p. S5 B
由于MS的VS编译器对C99标准支持不好,不支持函数当中混合定义、声明变量。
4 ]! v7 ?3 j( C, i+ X6 q& @! o: H解决办法:在函数开头统一定义变量, S6 Q1 J+ b4 [( _2 L3 D

& T: W# q2 Z! V/ _' R, g$ e" q+ ge.g
  \' I' F7 v- _# h( L4 t0 o
  X# Z. ^* ~, b/ E编译不过
3 ?' V9 z8 H5 L9 i4 {2 O: Bvoid funA() {                              void funA() {7 c0 l$ N! D, N# @+ V, K; j
   int i,j;                                        int i,j,x;0 H9 O" ?+ w9 w3 t: Q  {2 |- n
   i = 0;            ========>         i = 0;
1 v; U6 G% i( H8 H+ N   int x = 0;                                   x = 0;
6 D% G* A' ^0 D* ?- i, ^& \}                                               }
; h2 ~4 v: _% C  b# f( L8 N; ^! U& K3 V
2、链接问题% Z1 C/ e) N' A, o$ e

# U) @3 d; g% N2 |" wlibx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_init,该符号在函数 _x264_encoder_open_75 中被引用4 U: \( }7 f% y
1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_is_empty,该符号在函数 _x264_encoder_encode 中被引用& E% [- k1 A: |# K3 O
1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_get_frames,该符号在函数 _x264_encoder_encode 中被引用: a$ r  Q6 h7 `, J$ `4 P% N$ C. e- i% y
1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_put_frame,该符号在函数 _x264_encoder_encode 中被引用9 u4 K9 b/ e! B) V: X# z
1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_delete,该符号在函数 _x264_encoder_close 中被引用
/ C( ^: s' l. ?& k" ^4 j) U1>libx264.lib(analyse.obj) : error LNK2019: 无法解析的外部符号 _log2f,该符号在函数 _x264_mb_analyse_load_costs 中被引用
5 B1 t! p4 c# t& M6 G$ k% y: W% ~8 c7 i0 O5 @5 Z) I9 y
由于最近x264_param中新添了lookahead,而对应Win32工程是没有及时更新。  n# K' J3 d2 ?; e1 _8 z1 C1 o7 z
把encoder/lookahead.c添加到工程里(和encode.c放在一起)即可。! Z! @+ Q7 l: W' l1 m
, {* `1 N% T) k
error LNK2019 unresolved external symbol _log2f
( C) n: ]  q& C7 u2 E6 s另外,如果最后出现error LNK2019 unresolved external symbol _log2f,在osdep.h里定义一下log2f(不知道性能如何) :) s, G+ d" n# T% s. l& Q* K  a
: D( w6 P' i2 c2 g. t
#ifdef _MSC_VER
' v) W# k+ I, C6 F4 K( v#define inline __inline1 ]+ X3 r. H7 Z
#define strcasecmp stricmp5 `7 N# H; ^, F" D
#define strncasecmp strnicmp
$ V0 l5 Z  \: U& W" n: b$ e( v#define snprintf _snprintf
5 O& H  R+ D# A( m#define fseek _fseeki64$ }" s, E, i$ g) }
#define ftell _ftelli641 e( i0 u4 u( A4 G+ H* V
#define isfinite _finite6 t9 x  }6 i+ [& z. J! O, P. r7 O
#define strtok_r strtok_s
3 D* j0 h, a# q8 n, r2 U#define _CRT_SECURE_NO_DEPRECATE7 F* v: S( g% A. I: o5 F9 G4 \
#define X264_VERSION "" // no configure script for msvc
7 o  L, ]- u6 x0 {$ w( Z: H#define log2f(x) (logf(x)*1.4426950408889634f)  X* q, v" @7 ]4 g4 L4 ]/ R3 U0 O
#endif
1 N0 T/ i4 R( v, s& _9 r: u
9 Z( w, [2 {( I( a2 F8 ^2 D' Y或 :$ u  S1 F( `6 b% _5 u' r$ G
#define log2f(x)     ((float)log((double)(x)))/(log((double)2))
, {1 g; @) _* |# ^% E7 P
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-12-29 19:35 , Processed in 0.020732 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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