*x264 for vc
http://lspbeyond.go1.icpcn.com/x264/index.htm
*x264编译问题合集(不断更新中...)
NOTE:vc71下试验的错误情况,vc6下会有稍许差别,但也类似。
[1] x264路径带空格
错误:
正在执行自定义生成步骤
nasm: error: more than one input file specified
type `nasm -h' for help
Project : error PRJ0019: 工具从"正在执行自定义生成步骤"
特征:
nasm出现错误
原因:
你的x264文件夹的路径中有空格,如下所示:
D:/program files/x264-051226
nasm.exe把空格前的字符串作为路径,从而导致了错误。
[2] nasm 未安装
错误:
Assembly "../../common/i386/predict-a.asm"
'nasm' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
Error executing c:/windows/system32/cmd.exe.
特征:
'nasm' 不是内部或外部命令,也不是可运行的程序
原因:
没有安装nasm
解决:从本站下载nasm.exe(098版本),拷贝到vc安装目录的bin文件夹下就可以了。
[3] vc6没有打补丁
错误:
common.h(69) : fatal error C1600: unsupported data type
或
common.h:error c2485:'align':unrecognized externded attribute syntax error:'c'
特征:
数据类型不支持
原因:
vc6没有安装sp5或vcpp
[4] .c文件按没有包含到工程中
错误:
x264.obj : error LNK2019: 无法解析的外部符号 _mk_createWriter ,该符号在函数 _open_file_mkv 中被引用
x264.obj : error LNK2019: 无法解析的外部符号 _mk_addFrameData ,该符号在函数 _write_nalu_mkv 中被引用
x264.obj : error LNK2019: 无法解析的外部符号 _mk_startFrame ,该符号在函数 _write_nalu_mkv 中被引用
x264.obj : error LNK2019: 无法解析的外部符号 _mk_writeHeader ,该符号在函数 _write_header_mkv 中被引用
x264.obj : error LNK2019: 无法解析的外部符号 _mk_setFrameFlags ,该符号在函数 _set_eop_mkv 中被引用
x264.obj : error LNK2019: 无法解析的外部符号 _mk_close ,该符号在函数 _close_file_mkv 中被引用
特征:
link 错误,出现无法解析的外部符号。
原因:
.c文件按没有包含到工程中。这是因为x264的win32下的vc工程没有和x264同步更新所致,当x264加入了新的源文件,而vc工程中没有包含进来,就会有这样的错误。像上例就是因为matroska.c没有包含到工程中所致。
Ps: .h文件没有包含的工程中,一般不会出错,但建议还是包含进来,养成好习惯嘛。
[5] 安装了intel编译器(未试验)
错误:
LINK : fatal error LNK1104: cannot open file "libm.lib"
Error executing link.exe.
特征:
libm.lib link 错误
原因:
可能是安装了intel c++ complier
[6] .asm文件没有设置自定义编译选项
错误:
libx264.lib(cpu.obj) : error LNK2019: 无法解析的外部符号 _x264_cpu_cpuid ,该符号在函数 _x264_cpu_detect 中被引用
libx264.lib(cpu.obj) : error LNK2019: 无法解析的外部符号 _x264_cpu_cpuid_test ,该符号在函数 _x264_cpu_detect 中被引用
libx264.lib(cpu.obj) : error LNK2019: 无法解析的外部符号 _x264_emms ,该符号在函数 _x264_cpu_restore 中被引用
特征:
容易和没有包含.c文件的错误混淆,其特征就是出现的外部符号都是汇编文件中的。
原因:
每个.asm文件都有自定义的编译选项。
解决(针对本例):vc下,project setting,选中cpu-a.asm这个文件,然后将其commands设置为:
nasm -f win32 -DPREFIX -o $(IntDir)/$(InputName).obj $(InputPath)
[7] 工程转换造成的nasm编译错误
错误:
nasm: error: no input file specified
type `nasm -h' for help
特征:
nasm: error: no input file specified
原因:
在vc71下打开.dsw工程文件时,会自动转换工程文
件,最后保存为.vcproj, .sln等文件。
转换后.asm文件的自定义编译命令会被修改,从而产生如上的编译错误。
正确的.asm编译命令:
nasm -f win32 -DPREFIX -o $(IntDir)/$(InputName).obj $(InputPath)
被修改后的编译命令:
nasm -f win32 -DPREFIX -o "$(IntDir)"/"$(InputName)".obj "$(InputPath)"
解决办法:
就将多出的引号删除即可。
*关于我制作的vc下的x264版本,若遇到问题,我尽量帮你解决。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/sunshine1314/archive/2005/12/20/557219.aspx