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

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

[复制链接]
发表于 2011-5-25 21:03:42 | 显示全部楼层 |阅读模式
// [+] 09/25/09 (mm/dd/yy)
- U' e0 [+ |- G2 t; a& E
* F& C. V: p; g# r下载地址:  e3 e& T$ {! Y
http://ttpublic.googlecode.com/files/x264-snapshot-20090216-2245.rar
7 W# f. a7 k% H, W9 m0 n
& t: n! M& r8 ?7 v* b1 @: p/ U3 `        总有人说最新的版本编译不过,搞的群、论坛里到处都是这种求助贴。建议斑竹把这个解决办法放到醒目的位置,以减少噪音。
, d* M; y/ A8 u5 x" X% k: C
& l9 [" L9 u' l$ w: R科普开始$ k5 z7 f+ c/ K; W. d! Q/ E
% x# t  J* o6 p. x& Q* A9 Z
1、编译问题0 m% o8 h) {; x" o% `% c' _/ {
由于MS的VS编译器对C99标准支持不好,不支持函数当中混合定义、声明变量。8 G2 ]! K. `+ {6 q* z5 a0 A3 |
解决办法:在函数开头统一定义变量
8 O1 p9 e: y+ F- v% ?. P% x" |& o' `" B& {+ S$ F5 u+ T
e.g0 e6 v1 L+ `8 }" e
: g8 X& v# m# F* O/ Z: N# U+ }+ e
编译不过
' V& U0 a+ k" Q6 n2 j* B; @$ zvoid funA() {                              void funA() {# _+ V# [% d/ u  I" r
   int i,j;                                        int i,j,x;0 w2 a5 `( e4 F" L( H+ J0 Y" K
   i = 0;            ========>         i = 0;# t% L( P- l4 _; [
   int x = 0;                                   x = 0;; j$ a4 k! z# w  J/ t3 g! K: O
}                                               }
( A: L; ^  @4 {( d4 U  x5 n; b
* G5 a2 e# [8 `, E! `2、链接问题3 l$ [& H7 `* D8 c& z4 m5 o, `
1 o' b! `: `3 E4 e
libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_init,该符号在函数 _x264_encoder_open_75 中被引用
1 i* ]; l2 P5 X, ^! y3 E1 `2 |1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_is_empty,该符号在函数 _x264_encoder_encode 中被引用$ @$ g' S. T; ~% S# T
1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_get_frames,该符号在函数 _x264_encoder_encode 中被引用
$ p2 B. S& H  U7 u$ |: P" i1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_put_frame,该符号在函数 _x264_encoder_encode 中被引用
) I6 [; L, _# P& Y1>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_delete,该符号在函数 _x264_encoder_close 中被引用2 ~% h+ L- O% J/ S, k! S4 K/ W
1>libx264.lib(analyse.obj) : error LNK2019: 无法解析的外部符号 _log2f,该符号在函数 _x264_mb_analyse_load_costs 中被引用
2 A; R* s3 n  l$ t- F
; X+ D% \) V. k1 M6 L由于最近x264_param中新添了lookahead,而对应Win32工程是没有及时更新。
2 l/ M7 M  o) ]$ F把encoder/lookahead.c添加到工程里(和encode.c放在一起)即可。
9 S( p' R2 G. Q4 f% s/ F
; v, v- ?% W" y! j( aerror LNK2019 unresolved external symbol _log2f
3 `/ f3 m0 o  }* [另外,如果最后出现error LNK2019 unresolved external symbol _log2f,在osdep.h里定义一下log2f(不知道性能如何) :0 Y% M" o1 F- w( Z; O0 \+ U0 T! Q
7 K! u2 M7 W: g5 `2 ^0 o
#ifdef _MSC_VER
, ?1 u! Z/ |, K6 L' h#define inline __inline
' C) X, z8 m/ v#define strcasecmp stricmp
6 i! U2 u4 P$ X7 E! d& _/ r#define strncasecmp strnicmp: m% M, f* e( c8 \  f: w
#define snprintf _snprintf" ~( ]  n3 R9 Q- C
#define fseek _fseeki64
7 t8 V! T- K+ j9 j5 c% h5 u#define ftell _ftelli64
. N8 H4 ^4 B: G" [3 Q8 y#define isfinite _finite4 K% ?% D1 M2 O  f. G
#define strtok_r strtok_s
% e% z9 I6 K8 p5 C0 c! N0 S9 i#define _CRT_SECURE_NO_DEPRECATE
* p, U) T0 X; F#define X264_VERSION "" // no configure script for msvc7 D: L& h7 L& G! G
#define log2f(x) (logf(x)*1.4426950408889634f)4 j3 N2 T* D, |% R0 q# ~+ d1 ]8 v
#endif
- k9 I  p! Q2 ~- _( d+ I* C. g& |4 w* N: G1 F8 {
或 :
/ T0 s( \+ R8 l0 Y7 R: _#define log2f(x)     ((float)log((double)(x)))/(log((double)2))
5 L5 \7 ]: z, z8 B; ^( }( |, o
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-14 00:58 , Processed in 0.017839 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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