对于vc6.0环境下的编译方法,偶就借花献佛了见附件,偶直接把人家给翻译好的东东拿上来。
附件中的xvid-core-1.1.2是偶根据下面的操作,可以在vs2005下面编译的版本。
主要是起到备忘的作用,我主要讲讲在vs2005平台上面编译xvid-core的方法,
浪费了偶两个多小时,心疼ing...
首先,在win平台下面nasm.exe是不可少的,这个codec有太多的asm文件需要编译了。
方便起见偶放到附件里面了。下载它以后,我们需要把它放到vc的bin目录下面。在我的机器上是
D:/Program Files/Microsoft Visual Studio 8/VC/bin
好了,做到这里,第一步算是完成了。
下面就是非常让人苦恼的问题了,我自己感觉这是vs2005的bug。
原本的xvid-core1.1.2是专门为了在vc6下面编译的,所以那些工程文件
都是为vc6准备的,到了vs2005,连导出mak文件都没有了。我们必须从dsp文件开始下手。
进入:
D:/xvidcore-1.1.2/build/win32
我们会看到很多vc6工程文件:
2006-11-01  19:47            40,132 libxvidcore.dsp
2006-11-01  19:47            39,512 libxvidcore_static.dsp
2006-11-01  17:58             4,718 xvid_bench.dsp
2006-11-01  17:14             4,203 xvid_decraw.dsp
2006-11-01  17:46             4,900 xvid_decraw_static.dsp
2005-10-07  23:02             4,138 xvid_encraw.dsp
2006-11-01  17:45             4,666 xvid_encraw_static.dsp
2006-11-01  18:00             2,262 xvidcore.dsw
如果我们双击这个xvidcore.dsw,vs2005会提示你是否转换工程到
vs2005的版本。如果转换了,面临的结果就是铁定编译不过。
经过痛苦的追踪,我找到了编译不过的原因:
(1)dsp工程文件转换到vs2005时候的bug,手工解决
用ultraedit或者任何你喜欢的文本编辑器打开,然后搜索"InputDir"
你会看到如下的内容:
!IF  "$(CFG)" == "libxvidcore - Win32 Release"
# Begin Custom Build - Assembling $(InputPath)
InputDir=../../src/image/x86_asm
IntDir=./Release
InputPath=../../src/image/x86_asm/colorspace_yuyv_mmx.asm
InputName=colorspace_yuyv_mmx
"$(IntDir)/$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
 nasm -f win32 -DPREFIX -I"$(InputDir)"/ -o $(IntDir)/$(InputName).obj $(InputPath)
# End Custom Build
这段就是没有修改之前的内容了,从上面的脚本看来,应该生成如下的编译命令:
nasm -f win32 -DPREFIX -I"../../src/image/x86_asm"/ -o ./Release/colorspace_yuyv_mmx.obj ../../src/image/x86_asm/colorspace_yuyv_mmx.asm
这个编译命令是可以单独编译生成.obj文件的,偶已经测试过。
但是经过转换后vs2005的转换结果是:
nasm -f win32 -DPREFIX -I"../../src/image/x86_asm/"/ -o ./Release/colorspace_yuyv_mmx.obj ../../src/image/x86_asm/colorspace_yuyv_mmx.asm
注意这里只是-I"../../src/image/x86_asm/"/莫名其妙的多了一个"/",nasm就会报告:
nasm: error: no input file specified
type `nasm -h' for help
所以,这个问题解决方法是把上面代码改为:
# Begin Custom Build - Assembling $(InputPath)
InputDir=../../src/image/x86_asm
IntDir=./Release
InputPath=../../src/image/x86_asm/colorspace_yuyv_mmx.asm
InputName=colorspace_yuyv_mmx
"$(IntDir)/$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
 nasm -f win32 -DPREFIX -I$(InputDir) -o $(IntDir)/$(InputName).obj $(InputPath)
# End Custom Build
去掉引号和它后面的那个/即可。
这个时候,你再双击xvidcore.dsw,执行转换,就可以发现.asm文件都可以顺利编译了。
但是在编译.c文件的时候,会出现一大堆警告,警告原因主要是使用了"非安全"的代码
比如scanf和sprintf之类的,编译器会建议你采用scanf_s和sprintf_s之类的安全替代
函数,只要简单忽略这些即可。
(2)修改源文件的定义
但是下面的错误,就让人头疼了:
error C2632: 'int' followed by 'int' is illegal
双击它,打开的文件竟然是crtdefs.h文件,系统的运行库怎么可能会出错?
原因肯定在代码里面。
这里的int followed by int是这句代码引起的:
typedef _W64 int         intptr_t;
这里的intptr_t是不是由于已经被定义了,所以此时编译器解释为:
typedef _W64 int         int ;
这样,就是int followed by int出现的原因了。
所以,再回头查看源代码:
我们在C:/xvidcore-1.1.2/src目录下面有一个#    define intptr_t int32_t
呵呵,原来如此,xvid的作者已经定义了intptr_t了。这个定义和crtdefs.h文件
中的定义相冲突,因此,才导致了这个问题。
ok,简单注释掉即可。
现在重新编译一下,选择rebuild solution,呵呵,everything go on its way.
这些就是我在vc6编译成功的基础上在vs2005上编译该库的一点心得。
希望对大家有用。

xvid-core1.1.2编译方法(vc6,vs2005)相关推荐

  1. libgc 加 .mak 在 vc6 vs2008 中的编译方法

    libgc 加 .mak 在 vc6 vs2008 中的编译方法 libgc 加 .make 在 vc6 vs2008 中的编译方法 开源代码多数是用 .mak 编译 win 平台,网上的教程多是说明 ...

  2. VoiceChatter在VS2005上编译方法

    代码名称:VoiceChatter-src-1.4.2.tar.gz 代码版本:1.4.2 编译环境:VS2005 + Windows XP 硬件环境:Intel Core2 第一步:解压,VS200 ...

  3. zlib 1.2.5 编译 ( VS2010 vc6 )

    vs2010: 方法一: - 解压到目录,如d:\library - 开启VS2010的Command Prompt (32bit) - 进入到zlib-1.2.5\contrib\masmx86目录 ...

  4. uboot中添加新型号步骤以及编译方法

    一.添加新型号的支持: 1.在board.cfg 添加需要支持的型号: 2.在include/configs下添加支持新型号的.h文件: 二.uboot编译方法: 1.配置编译的环境变量: expor ...

  5. android+包+反编译,简单的Android之apk包反编译方法

    网上相关的文章一大堆了,我只是总结下自己的反编译方法和工具 工具下载地址: 下载上面的三个工具的压缩包 Apktool_v1.5.1_CHS_By_b-sf.rar dex2jar.zip jd-gu ...

  6. ATF(TF-A)的编译方法

    官网给出的编译方法: make PLAT=fvp BL33=/bl33.bin fip 针对qemu_v8平台的编译,真实情况是这样的: CROSS_COMPILE="/usr/bin/cc ...

  7. 2019编译ffepeg vs_2020/5-Win10下ffmpeg最简编译方法

    前期准备:Windows10+WSL,WSL我在Windows商店下载的Ubuntu18 VisualStudio2019,其他版本应该也可以试试 ffmpeg新版源码,我的是4.0 对,就这么少.很 ...

  8. osg第三方插件的编译方法(以jpeg插件来讲解)

    osg以插件方式来扩展.加载第三方库,如果这些库在程序运行时找不到,就会报类似如下的错误:(这里以jpeg为例): 下面以jpeg为例,讲解jpeg插件的编译方法,其它库和这步骤类似. 先从库的官网下 ...

  9. Linux编译soci库,Soci库linux下的编译方法

    Soci库的linux编译方法 1.下载soci库源码 2.在目标机器上配置数据库环境 以oracle为例:(其他数据库只需要简单安装客户端即可) A)下载oracle客户端安装包 oracle-in ...

  10. MINIGUI编译方法【原创】

    编译安装minigui:共有libminigui-2.0.4-linux,minigui-res-2.0.4,mde-2.0.4三个包, libminigui-2.0.4-<os>.tar ...

最新文章

  1. m-orchastration system
  2. SpringSecurity权限表达式
  3. WebBrowser 控件中屏蔽alert,confirm脚本对话框的方法。
  4. 一份关于机器学习端到端学习指南
  5. Linux 原生异步 IO 原理与使用
  6. cas单点登录学习:cas服务端与客户端的搭建
  7. java ref object_深入探讨 java.lang.ref 包
  8. Gartner发布云安全能力评估报告:阿里云全球第二,超过亚马逊!
  9. 重装系统后,腾讯TM2013 “应用程序无法启动,因为程序的并行配置不正确
  10. Bailian2931 期末考试第二题——比较数字个数【文本】
  11. c语言找不到exe文件,这个程序怎么运行?为什么显示没有exe??
  12. js中不能做变量名的字符
  13. 电脑计算机稳定删除垃圾游戏,电脑卡怎么办简单步骤_如何清理电脑垃圾
  14. 托管服务器ip绑定域名_如何在一台服务器上托管多个域名和项目
  15. win10 桌面的的文件都不见了 提示不注销保存都文件都为临时_在桌面上创建一个关机快捷方式,只需一条命令,关机速度大幅提升...
  16. yarn.lock、package-lock.json、npm-shrinkwrap.json的理解
  17. beamer插入图片_用Latex制作幻灯片(beamer)
  18. 面试官怎样面试出合格的技术人员
  19. IE8浏览器为什么没有工具-internet选项
  20. white-space:nowrap normal pre pre-wrap pre-line的区别以及pre和pre-wrap的“首行缩进“问题

热门文章

  1. Appium下载和配置
  2. 算法笔记和上机实战训练指南(附下载)
  3. VUE引入阿里icon
  4. web中使用阿里巴巴矢量库作为图标管理
  5. win7便笺重启计算机后还有吗,Win7电脑关机后,记在便签小工具上的内容还在吗?...
  6. 基于单片机的人体心率脉搏检测系统
  7. nginx工作原理、配置以及web服务器的资源请求过程
  8. win7下虚拟显示器完成记(virtual monitor)——VDI显卡透传场景
  9. Eclipse更改字体大小
  10. Adobe Acrobat reading untagged document window pops up