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

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

[复制链接]
发表于 2011-5-25 21:03:42 | 显示全部楼层 |阅读模式
// [+] 09/25/09 (mm/dd/yy)" y3 I/ `9 X. P9 ~7 ~1 m- S
4 D5 \8 v2 J8 }1 H+ p1 ]1 j# v, t* T
下载地址:7 J; L8 f4 p/ x" [7 o% d/ C' f% f
http://ttpublic.googlecode.com/files/x264-snapshot-20090216-2245.rar  c: ]6 H8 k6 u( ~1 |
9 d$ P5 O4 e# ]
        总有人说最新的版本编译不过,搞的群、论坛里到处都是这种求助贴。建议斑竹把这个解决办法放到醒目的位置,以减少噪音。
7 l$ G  }; V; g1 @/ a9 U1 ?! F6 T1 b+ s1 U
科普开始4 w0 \' m) E, [6 f
% ]! F- Z( _8 w5 @
1、编译问题# ]4 J8 n, y# u7 N9 k' j0 D# U0 ~/ w
由于MS的VS编译器对C99标准支持不好,不支持函数当中混合定义、声明变量。
9 c9 [: @/ {0 e5 z" q9 F6 d% j解决办法:在函数开头统一定义变量
7 V/ p, k; u) \! J1 @) [
6 d- s' n4 G+ r9 ke.g* ?3 c% \: a% _( U: @

6 I- @6 o  G* M5 R. D5 v编译不过
8 r  F; j; C, p' ]void funA() {                              void funA() {
# g* \6 S; ?; M' k: Q* I! P9 J   int i,j;                                        int i,j,x;- E6 M9 h! a' C9 j8 D; r3 p
   i = 0;            ========>         i = 0;
' _; p. S- G# K: V" J) m   int x = 0;                                   x = 0;
: N) `" a  \! e" U}                                               }7 o) o. W- I" r
6 b+ L+ D- ]7 I; ^2 L* K
2、链接问题& Z# [7 u# B1 Z  j  z  |

2 i$ d8 i! v, @. u4 @libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_init,该符号在函数 _x264_encoder_open_75 中被引用
8 I' C7 H& Q. b- `2 t1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_is_empty,该符号在函数 _x264_encoder_encode 中被引用8 o0 _3 u8 Q8 n+ \" ~7 X
1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_get_frames,该符号在函数 _x264_encoder_encode 中被引用
1 u6 i0 Q& H$ B; A1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_put_frame,该符号在函数 _x264_encoder_encode 中被引用
) |! U. @' D. u+ j7 L8 t1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_delete,该符号在函数 _x264_encoder_close 中被引用
: N& Z, H. C3 n2 }2 S# M1>libx264.lib(analyse.obj) : error LNK2019: 无法解析的外部符号 _log2f,该符号在函数 _x264_mb_analyse_load_costs 中被引用
$ z& ?: F' Z% [3 J$ a, ?# A- I# J' h9 g0 N* Y
由于最近x264_param中新添了lookahead,而对应Win32工程是没有及时更新。( @4 _9 z0 B4 y8 _9 _2 @) t
把encoder/lookahead.c添加到工程里(和encode.c放在一起)即可。- M3 b& `8 B+ A& @; U  {" `$ C
2 C2 c0 ^% t  i' ?
error LNK2019 unresolved external symbol _log2f3 \. B1 V" {' ~, K! B
另外,如果最后出现error LNK2019 unresolved external symbol _log2f,在osdep.h里定义一下log2f(不知道性能如何) :$ d9 K! l1 ?" X+ L/ Z! L( V
4 A9 h7 T8 a; v' O' P+ c
#ifdef _MSC_VER
6 j' X$ I! e  z/ b3 G6 ?" C6 D3 M* c#define inline __inline, b2 _1 g, q6 S% ?, C
#define strcasecmp stricmp
# m$ c" G8 ?" c/ B! F. ~& s#define strncasecmp strnicmp
, C+ s$ x0 w" r' {; L" R#define snprintf _snprintf  c9 ~, m2 j! A: Y
#define fseek _fseeki64
" A; X. ]. N. P6 w/ S1 e#define ftell _ftelli64: R$ m( t1 L9 y& j* W  }
#define isfinite _finite2 `7 K( O4 g( `. S. d; S) g
#define strtok_r strtok_s! I% Y$ _1 I! ?% `, q4 S) H' ~
#define _CRT_SECURE_NO_DEPRECATE
: W2 E% N! ~6 Y9 H#define X264_VERSION "" // no configure script for msvc* g! C, E7 D& V9 m5 r1 L( c5 D0 g
#define log2f(x) (logf(x)*1.4426950408889634f)
% t/ {- A& k  q- S) q% X#endif
  R! L% p# c: c- @% N; ]( j! J% D1 Z' ]* S
或 :9 _" x8 d' x  X* |
#define log2f(x)     ((float)log((double)(x)))/(log((double)2))- ~+ y. \# N& I$ F) c  U
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-12-29 17:40 , Processed in 0.021877 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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