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

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

[复制链接]
发表于 2011-5-25 21:03:42 | 显示全部楼层 |阅读模式
// [+] 09/25/09 (mm/dd/yy)- ?7 N, J* E9 U
, `. D3 L' M0 d7 C% j" S. s
下载地址:
1 G( \5 w( I/ o$ J, thttp://ttpublic.googlecode.com/files/x264-snapshot-20090216-2245.rar
: N' B% `' w0 h/ }* `
# i  J1 V. _/ r- `6 W! B9 ]        总有人说最新的版本编译不过,搞的群、论坛里到处都是这种求助贴。建议斑竹把这个解决办法放到醒目的位置,以减少噪音。4 t! E8 S9 @1 `9 x7 C+ L
, M- |, n. {. J& Z
科普开始. d/ G9 L- Q9 G5 _& }7 e: y

8 [% v5 s' z. c! U1、编译问题' @0 p/ N0 E+ E5 i& y
由于MS的VS编译器对C99标准支持不好,不支持函数当中混合定义、声明变量。' D  [# k9 m4 b9 {/ q
解决办法:在函数开头统一定义变量
! e) K: E* E  P$ d6 ?* z) H% n- d4 a9 ^& n5 K
e.g
' W3 S+ m5 z3 y# y. H7 X
; ~( u' n/ l5 A# V) h" e编译不过- y9 M" E6 `" S0 y4 i6 U
void funA() {                              void funA() {
/ M# H) L+ [0 P   int i,j;                                        int i,j,x;
# |0 k0 N# Q, g9 s& [, a   i = 0;            ========>         i = 0;, D) N: X' i& Y
   int x = 0;                                   x = 0;4 e- o. W9 R7 W* b
}                                               }; \* |# Y( M2 @7 K
5 B  [) h* A+ H1 A( M* r. _
2、链接问题  l! B  F( @4 I8 g9 s" C2 W' S
1 h* m' N! ?, P; H
libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_init,该符号在函数 _x264_encoder_open_75 中被引用
- R2 T+ t! T3 A) H& }3 Q1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_is_empty,该符号在函数 _x264_encoder_encode 中被引用
8 T# }/ s9 S8 @. d1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_get_frames,该符号在函数 _x264_encoder_encode 中被引用/ x; X4 V, W. m" ~2 P: H
1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_put_frame,该符号在函数 _x264_encoder_encode 中被引用
, y: P8 G( S$ |8 ^$ o1 [' {1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_delete,该符号在函数 _x264_encoder_close 中被引用# O9 W: J  u/ W
1>libx264.lib(analyse.obj) : error LNK2019: 无法解析的外部符号 _log2f,该符号在函数 _x264_mb_analyse_load_costs 中被引用
3 c$ V( l6 T: Q: h8 N  c' D6 ~$ q. L# {8 I# W
由于最近x264_param中新添了lookahead,而对应Win32工程是没有及时更新。1 S* T# E  T. d2 `4 [  z- l
把encoder/lookahead.c添加到工程里(和encode.c放在一起)即可。
+ ~+ X5 f& d& U+ h3 Z4 t2 n) b4 B5 @, }  q
error LNK2019 unresolved external symbol _log2f
3 c. ~, j. t4 {- Q另外,如果最后出现error LNK2019 unresolved external symbol _log2f,在osdep.h里定义一下log2f(不知道性能如何) :1 n/ q( f( Q  Q# _" L$ V3 m% A

4 ^% N* k1 @. D8 i$ {; d#ifdef _MSC_VER7 O2 ]; Y- @/ v+ ]* Z
#define inline __inline. v- J+ U; E2 E7 @) ?
#define strcasecmp stricmp& l6 }, @0 A4 d( K
#define strncasecmp strnicmp
+ F8 F; w. N: I0 e, O9 l9 r, C#define snprintf _snprintf
/ R: A3 S" |; {: N% D" g#define fseek _fseeki640 {" p' H$ l8 Q# b2 }; U" f
#define ftell _ftelli64; \" U( I* R8 y' N& j
#define isfinite _finite
  f# g! d$ e- U0 D. G0 \#define strtok_r strtok_s
5 ?+ V5 n6 }) M7 Z8 ]#define _CRT_SECURE_NO_DEPRECATE/ d2 \& {/ d" m" v) e5 _0 m
#define X264_VERSION "" // no configure script for msvc
8 t- ?' R3 l2 A: _% G' s+ z' j#define log2f(x) (logf(x)*1.4426950408889634f)8 }. c' [- S# ]0 _5 d" J6 u
#endif
9 v8 V. h* w$ u0 b4 y
2 o. f3 q; n/ ]2 @* D或 :1 v1 e" D" K. c2 c" v2 y) D
#define log2f(x)     ((float)log((double)(x)))/(log((double)2))& v9 Z6 A3 v* [# c8 \
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-18 04:47 , Processed in 0.022261 second(s), 14 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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