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

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

[复制链接]
发表于 2011-5-25 21:03:42 | 显示全部楼层 |阅读模式
// [+] 09/25/09 (mm/dd/yy)
- e% {, L1 T6 ]5 `" S+ k" W) k* p4 i" M3 ?* N/ M, x) a# e  Z; G# D$ D
下载地址:6 m0 S* K7 [! k8 f. F2 \' j
http://ttpublic.googlecode.com/files/x264-snapshot-20090216-2245.rar" l5 I6 X7 s+ o& Q, z& A. p

/ x% o# l5 j; X# i" X7 \        总有人说最新的版本编译不过,搞的群、论坛里到处都是这种求助贴。建议斑竹把这个解决办法放到醒目的位置,以减少噪音。
7 ~; {, `: {& z8 C& q* D* V* F
) C6 C0 o2 k7 U% G% G1 `6 n2 }科普开始
- v# {) @( A  ]2 Z; Z1 n
2 \4 A! q+ p, m; H9 @* m' Z0 V1、编译问题
: {7 @5 A& |# ^6 R. R由于MS的VS编译器对C99标准支持不好,不支持函数当中混合定义、声明变量。
2 ?0 N, M- N$ c解决办法:在函数开头统一定义变量0 A! n+ V  N# S* ~$ @

. Z7 ^5 A. C0 L8 z- [e.g
% P3 ?% {# F8 Y' B9 Q  C! W3 s/ b# F; H3 j% s! `
编译不过, f0 E( q) R, T( s: T, F. R
void funA() {                              void funA() {
3 s# ?1 @( h7 |$ Q% G   int i,j;                                        int i,j,x;
3 c& E7 G# V7 M7 d( m! e  }   i = 0;            ========>         i = 0;
; ?7 `+ H- }: T- q$ m% i0 G% a, v& _   int x = 0;                                   x = 0;
6 t  g2 O0 e# p! [; p* M4 i7 R}                                               }
0 x  b" p& k' v; S% \; I% B' ]8 E: n) Q2 Y3 }) O; w2 m- [
2、链接问题0 x: A1 }4 W, ?

& V/ P, v0 {9 F$ s$ K# p  Ulibx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_init,该符号在函数 _x264_encoder_open_75 中被引用* H6 e. {& I$ `/ q( u: `
1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_is_empty,该符号在函数 _x264_encoder_encode 中被引用" k0 O& j1 V- d. a3 O
1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_get_frames,该符号在函数 _x264_encoder_encode 中被引用, T) |* ?3 F  t1 a
1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_put_frame,该符号在函数 _x264_encoder_encode 中被引用) D2 s# }3 ?, K4 X  Z& N
1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_delete,该符号在函数 _x264_encoder_close 中被引用$ X' B' v( r3 d
1>libx264.lib(analyse.obj) : error LNK2019: 无法解析的外部符号 _log2f,该符号在函数 _x264_mb_analyse_load_costs 中被引用  f% l$ B% J7 d. l2 K
- Q' B) }# [' D8 @! F4 d- f9 O
由于最近x264_param中新添了lookahead,而对应Win32工程是没有及时更新。
( M! p2 e4 R; ^把encoder/lookahead.c添加到工程里(和encode.c放在一起)即可。
5 N3 M; Y: a2 i2 Y9 n  l1 p7 L
/ J+ E2 |+ c3 \error LNK2019 unresolved external symbol _log2f
! F: I! y( y4 |6 Y* Z" Y另外,如果最后出现error LNK2019 unresolved external symbol _log2f,在osdep.h里定义一下log2f(不知道性能如何) :2 Q+ P* G& e7 \) H# j. a

. A" K3 I9 C) x0 T2 s#ifdef _MSC_VER
. B, V% t2 U, V#define inline __inline1 U! l! @" x5 W8 g* B2 j
#define strcasecmp stricmp1 H6 j  K, v) c5 W% @
#define strncasecmp strnicmp
! }* G& y" K9 D3 w8 c7 p" q#define snprintf _snprintf3 Y5 b5 H  M/ `
#define fseek _fseeki64: |+ a5 f  a0 h
#define ftell _ftelli64
' T- t/ A: W0 R/ ~#define isfinite _finite  E5 }+ i6 ^( a1 E2 B  H* C, C
#define strtok_r strtok_s
0 o" L6 v# e' X#define _CRT_SECURE_NO_DEPRECATE
5 l' R' X5 _' _2 n- [#define X264_VERSION "" // no configure script for msvc% b- Z1 T5 K2 m8 }/ r. x3 J
#define log2f(x) (logf(x)*1.4426950408889634f): ^  k6 h0 X" L4 }- s' F; u
#endif5 E9 Q( C# u4 }& u- B( h0 [5 _/ {

# s6 E% U, \* l7 a: D4 Q* c或 :, z; v9 d. g4 N5 e& y! C( s9 h- T; A
#define log2f(x)     ((float)log((double)(x)))/(log((double)2))% V2 D0 r) e5 i! l( a7 J
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-12-30 02:12 , Processed in 0.019776 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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