x.264编译问题合集

*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版本,若遇到问题,我尽量帮你解决。

 

 

< type="text/javascript"> google_ad_client = "pub-7168982058404735"; google_ad_width = 728; google_ad_height = 90; google_ad_format = "728x90_as"; google_ad_type = "text_image"; google_ad_channel = ""; google_color_border = "C3D9FF"; google_color_bg = "FFFFFF"; google_color_link = "3D81EE"; google_color_text = "000000"; google_color_url = "008000"; google_ui_features = "rc:0"; google_language = 'zh-CN'; //--> < type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
发表于 @ 2005年12月20日 14:55:00 | 评论( 202 ) | 编辑| 举报| 收藏

旧一篇:我建了个x264 for vc子站,希望大家捧场! | 新一篇:[转载] ISO 14496-10 (Video) - Advanced Video Coding (AVC) (from doom9 )
查看最新精华文章 请访问博客首页相关文章
我建了个x264 for vc子站,希望大家捧场!x264在VC环境编译出错原因分析(转载)疯狂的程序员(79)unresolved external symbol "public: virtual __thiscall...错误编译xvid 1.1.3疯狂的程序员 - 致命错误[转载]x264在VC环境编译出错原因分析x264编译问题合集:) 发表于2005年12月28日 21:37:00  IP:举报回复删除
好像编译的时候有错误啊,在rdo那个文件里面李世平 发表于2006年1月4日 20:32:00  IP:举报回复删除
to 瓜子,
在我机子上没有碰到你的问题

ps: to everyone
提问时请注明说用的vc版本,及所用的x264版本
这样我好对症下药。

to zhouguozhi,
release版我没有调试过,是我偷懒了,sorry,后面版本将会解决release版的问题
瓜子 发表于2006年1月5日 9:42:00  IP:举报回复删除
发现我这里还有
F:\264\x264-051231\x264-051231\encoder\me.c(325) : fatal error C1600: unsupported data type
F:\264\x264-051231\x264-051231\encoder\macroblock.c(148) : fatal error C1600: unsupported data type
这个错误,应该是没没有把补丁装好
我现在装了一个sp6的补丁,装不上vcpp5
但是现在找不到sp5,你给那个网址上面也没有这个下载连接了,在微软网站上只是找到了sp6瓜子 发表于2006年1月10日 12:46:00  IP:举报回复删除
谢谢李老师和jimmy,我找到了sp5和vcpp5.exe,基本上补丁是打好了,编译没有出错。但是要给出可执行文件的路径,在bin目录下面没有可执行文件,只有一个libx264文件。
我用VC6.0,sp5,vcpp5,nasm补丁也打上了。
x264的版本是x264-051231李世平 发表于2006年1月10日 9:47:00  IP:举报回复删除
既然有了sp6,有没有对应的vcpp6呢/李世平 发表于2006年1月10日 20:04:00  IP:举报回复删除
原因:
x264下面有两个工程,libx264和x264,你只编译了前面一个。
解决:
vc下选择build->batch build,然后将两个工程都勾上,再进行编译就可以了。瓜子 发表于2006年1月11日 22:29:00  IP:举报回复删除
呵呵,果然行了,谢谢
李世平 发表于2006年1月13日 12:22:00  IP:举报回复删除
这是因为你直接按F5调试的时候,没有输入参数,就像你在命令行输入x264 而没有加上参数一样,当然转到help()里去了。
解决办法:
project setting里,将调试选项设好,同时输出文件路径也要对应瓜子 发表于2006年1月12日 21:50:00  IP:举报回复删除
今天看了一下程序,但是到现在还没有找到在什么地方设置输入文件。
单步运行到一个地方就退出,打印出帮助信息。
不知道是不是在project setting里面设置,他的参数格式是什么。
请李老师多多指教diyun 发表于2006年1月16日 16:48:00  IP:举报回复删除
李老师,你好:
我使用了你的x264,编译成功,编码也没问题,我想问一下,我产生的
test.264用什么播放器可以看到视频内容哪?
谢谢!一得 发表于2006年1月16日 16:11:00  IP:举报回复删除
http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp5/default.aspx
可下载sp5,要选择语言diyun 发表于2006年1月17日 9:41:00  IP:举报回复删除
李老师:谢谢你
我看到了tools里面有avc2avi,用它做了一个 avi转换器,
呵呵,搞定了!
感谢你!
tyzhaoqi 发表于2006年2月11日 15:06:00  IP:举报回复删除
有没有x264 for vc 的注解,有的话读起来好懂一些!myxmu 发表于2006年2月13日 13:32:00  IP:举报回复删除
现在做一个H.264的项目,是对视频文件进行编码->无线传输->解码的,已经做了H.264的编解码(vc),但只能对.YUV格式的,现想增加对其他格式(rm,rmvb,avi)之类的格式也能进行处理,不知道该如何做,

是否在软件中集成其他格式的解码器就行,如果是要如何集成,

能不能给点意见?

李世平 发表于2006年2月14日 15:30:00  IP:举报回复删除
to tyzhaoqi :
所有的修改之处都用//lsp..进行标示。
你在vc下进行全局查找,就可以查看所有的修改了。


to myxmu:
已回复你的邮件。李世平 发表于2006年2月14日 15:31:00  IP:举报回复删除
to tyzhaoqi :
所有的修改之处都用//lsp..进行标示。
你在vc下进行全局查找,就可以查看所有的修改了。


to myxmu:
已回复你的邮件。luk 发表于2006年2月15日 10:07:00  IP:举报回复删除
你比较过vc71下对c代码编译的可执行文件, vc71下对mmx代码编译的可执行文件,进行过效率比较吗(release)? vc71的编译器优化性能好像比较好啊.
alaix 发表于2006年2月16日 15:08:00  IP:举报回复删除
李老师,您好!
我们在研究一个简单的h264流服务器。我们修改x264的源代码,将一个yv12格式的avi文件直接压缩为h264编码的数据,然后加RTP包头发往客户端;客户端用quicktime打开事先编辑好的sdp文件,接收h264流并播放(注:我们没有采用RTSP协议,仅作一个特例的测试)。
问题:
我们基本肯定h264编码数据是正确的,但是quicktime接收到数据,仍不能正常显示视频图像。
可能原因:
1、RTP打包格式不对;
2、sdp文件内容书写不对。

请问李老师:
1、RTP对h264打包格式有什么特别要求?或有没有什么资料或现有源代码可研究?
2、针对某个h264编码的媒体文件,怎么书写其sdp描述?有没有现成的开源代码可研究?
谢谢
此致
敬礼
学生:alaix
Email: xudl.kdx@tom.com
希望收到你的邮件!!!
李世平 发表于2006年2月17日 16:22:00  IP:举报回复删除
to alaix:
1.264的rtp封装可以参考rfc3984里面讲解的很详细
2.sdp描述针对不同媒体格式其内容是差不多的,你可以参考rfc2327。其中关键一点就是要设定媒体类型号是98。rtp头部PT也要设为98ever 发表于2006年2月27日 16:17:00  IP:举报回复删除
李老师:您好。
我的编译通过了,用DOS命令测试编码对了。想问一下,那个vfw文件里的工程是不是用于播放编码所得文件的?好像要安装,是这样吗?能指导下具体怎么使用吗?李世平 发表于2006年2月28日 20:28:00  IP:举报回复删除
to jsdadong,你好,

jm decoder是有一定的错误恢复能力,但能力有限。你不要把随机噪声加在头信息也就是参数集部分。
ps: 错误恢复不是有跟无的问题,还是有恢复的程度的。最简单的恢复,就是碰到解码错误,马上找下一个start code,当然,这种方法恢复的程度是最低的了。

另外,最近都在忙毕业论文的事,所以有段时间没有上线了,抱歉。李世平 发表于2006年2月28日 20:30:00  IP:举报回复删除
CSDN BLOG总是出问题,上面的回复是针对另外一贴的。

to ever: vfw是对编码器的封装,便于一些视频压缩软件调用,具体使用查查vfw的知识jsdadong 发表于2006年2月28日 23:37:00  IP:举报回复删除
H.264的头信息好像不是固定长度的吧,是否有开始和结束的标志code,这样好将其分离开来,再对编码数据加误码。还没有深入地看码流的句法结构,请李大师先指点一下。
另外是否有比较好的仿真信道丢包(丢包率可控)的方法?
谢谢您的解答!ever 发表于2006年3月1日 9:58:00  IP:举报回复删除
谢谢李老师。
还想请问一下,从网上下载的你的264的代码(我用的是x264Peter050530),它和那些标准模型(JM86)有什么主要不同吗?谢谢。李世平 发表于2006年3月3日 13:08:00  IP:举报回复删除
to ever:
一切的不同都来源自其目的不一样。
jm是校验模型,需要实现264的全部特性。
x264面向实用,主要应用在dvdrip,所以选择的是真正有效的264特性。
具体差异可以看x264的开发网站。
ps: x264的后期版本增加了对high profile的支持李世平 发表于2006年3月3日 13:13:00  IP:举报回复删除
to jsdadong:

264的头信息叫做参数集,分为序列参数集和图像参数集,
而264的码流都是封装在nal种,两个参数集都有相应的nal type。你可以通过nal type进行判断。
因为头信息很重要,所以264设计的参数集可以进行带外传输。因此,我觉得你不能在参数集中加误差。
另外,信道误码的问题我不熟悉。李世平 发表于2006年3月3日 14:28:00  IP:举报回复删除
to ho:
BMP2SEQ.exe支持的输入是24位bmp图,输出是yuv4:2:0
参数设置,从你的描述中看是没有问题。

如babyroll 说的,程序应该没有问题,你再细心检查一下。
冰凌儿 发表于2006年3月7日 16:44:00  IP:举报回复删除
../..\common/frame.h(27) : fatal error C1083: Cannot open include file: 'inttypes.h': No such file or directory

inttypes.h文件在哪里可以找到??李世平 发表于2006年3月8日 22:10:00  IP:举报回复删除
x264 for vc: 060308已经更新!!ruby 发表于2006年3月9日 23:15:00  IP:举报回复删除
李老师:
您好!
我已经装了setupsp5.exe,在编译libx264.dsw时出现如下问题:
F:\264\源程序\x264Peter050530\x264-050530\encoder\ratecontrol.c(1028) : error C2520: conversion from unsigned __int64 to double not implemented, use signed __int64

请问是哪里出了问题?
十分感谢!!ruby 发表于2006年3月9日 23:25:00  IP:举报回复删除
在编译最新版本的时候除了上述错误还出现
F:\264\源程序\x264-060308\encoder\me.c(477) : fatal error C1600: unsupported data type

请问是怎么回事啊?
很着急^_^
多谢啦2李世平 发表于2006年3月10日 8:18:00  IP:举报回复删除
to ruby:
从症状上看应该是:

[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

====
继续关注
ruby 发表于2006年3月10日 9:34:00  IP:举报回复删除
李老师:
您好!
的确是没有装vcpp,现在没有错误了,但是有很多警告,比如
F:\264\源程序\x264Peter050530\x264-050530\encoder\ratecontrol.c(428) : warning C4244: '=' : conversion from 'int ' to 'float ', possible loss of data
F:\264\源程序\x264Peter050530\x264-050530\encoder\ratecontrol.c(675) : warning C4244: 'initializing' : conversion from 'double ' to 'float ', possible loss of data
F:\264\源程序\x264Peter050530\x264-050530\encoder\ratecontrol.c(704) : warning C4244: 'function' : conversion from 'double ' to 'int ', possible loss of data

请问是不是还存在什么问题?
十分感谢!ever 发表于2006年3月10日 11:00:00  IP:举报回复删除
李老师:
您好!
想麻烦问一下,x264程序中那些HAVE_MMXEXT是不是为提高速度呢?如果想做移植就不能用了,要全都去掉?
非常感谢!!!ruby 发表于2006年3月12日 22:27:00  IP:举报回复删除
李老师:
这几天很忙吗?怎么没有来?
我在单步调试程序的时候mian程序刚调到第二步 _setmode(_fileno(stdin), _O_BINARY);
时让输入setmode.c文件的路径,可是找不到该文件啊,请问是怎么回事?
多谢啦,我是小菜鸟^_^。ruby 发表于2006年3月12日 22:49:00  IP:举报回复删除
李老师:
文件夹里面示例中有yuv文件foreman_part_qcif.yuv,我怎样做才能看到压缩后的输出文件呢?
别骂我呀^_^study 发表于2006年3月15日 15:29:00  IP:举报回复删除
请教李老师:
x264的解码器现在是不是不能工作?guanchanghui 发表于2006年3月16日 13:26:00  IP:举报回复删除
请教李老师:
我做过T264的pc的移植,发现了很多问题,这些问题已经困扰我很长时间,就是VC运行库的问题,本来从网上下的t264的运行库都是singlethread*,但是MFC发布时的运行库是 多线程的库,所以PC 上写出来的程序总是刚开始编码就内存不能读,我现在真的不知道是否是t264本身的问题,移植时在非强制帧的情况下不能编过,把强制改为1就可以,现在我们小组想用x264做编码的移植,但是看了x264的源码,感觉比T264复杂多了,不知从何下手,需要注意什么问题,二者都用了汇编优化,稳定性怎么样,直接向mfc的程序移植如何起步,邮箱guanchanghui@gmail.com
zhoulingj 发表于2006年3月16日 16:38:00  IP:举报回复删除
请教李老师:
编译的时候出现下面的东西:
Assembly "..\..\common\i386\predict-a.asm"
Invalid keyboard code specified
nasm: fatal: unab

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值