在VC6.0中为什么c语言编译器vc6.0下载报错显示打包函数pack()未定义?

【求助】一个数据对齐的问题,VC6.0编译出的汇编代码有问题 [文字模式]
- 看雪安全论坛
查看完整版本 :
mtvwr假如有个结构
typedef struct _M{
char a[3];
f=m.b这样的C语句会被VC6.0编译成这样的反汇编代码是这样一种情况:把结构m的第4个字节处开始的数据赋值给f,应该是从这个结构的第3个字节处开始的数据赋值给f才对啊,怎么会出现这样的情况呢?有什么解决办法呢?
原本想直接定位b的地址,然后从该地址处取到的值,这样的表达在C语言中总觉的很别扭,而且程序就要需要多次使用这样的形式,有没什么好的方法解决这个问题呢???
achillis请先学习一下结构体的对齐知识~
achillis解决办法是#pragma pack(push,1),不过完全没有必要~
mtvwr教主,你说的这种形式:#pragma pack(push,1)和网上的不大一样:#pragma pack(n)
ugvnui我就是看看。搞不定。呵呵。!!~支持下。.. (/)呵呵。酷窝窝 (/)
achillis你自己实验下好了,像你这个程序,完全没有必要搞这个~
microdebug楼主,请熟悉了解一下X86体系结构的优化知识。X86指令集平台下,最快的访问内存的方式是4字节对齐方式,也就是以DWORD对齐方式
你的结构体在内存中是这样的:
char char char __4个字节
半道出家...
原本想直接定位b的地址,然后从该地址处取到的值,这样的表达在C语言中总觉的很别扭,而且程序就要需要多次使用这样的形式,有没什么好的方法解决这个问题呢???
如果我没理解错的话,楼主想从一个指针的偏移3处取一个整型值,简单的办法是可以定义一个模板函数或定义如下宏:
#define MIntAt3(_p) *(int*)((char*)_p+3)
loqich用offsetof是标准的用法
/* Define offsetof macro */
#ifdef __cplusplus
#define offsetof(s,m)
(size_t)( (ptrdiff_t)&reinterpret_cast&const volatile char&&((((s *)0)-&m)) )
#define offsetof(s,m)
(size_t)&reinterpret_cast&const volatile char&&((((s *)0)-&m))
#define offsetof(s,m)
(size_t)( (ptrdiff_t)&(((s *)0)-&m) )
#define offsetof(s,m)
(size_t)&(((s *)0)-&m)
#endif /* __cplusplus */如何在vc6下编译x264 -
- 博客频道 - CSDN.NET
如何在下编译
目前我已提供在下成功编译的源代码,每周更新一次。
大家可以直接下载使用,省去一些麻烦。
是用版权控制工具进行更新的,其主页上不提供源码压缩包,所以我们要用专用的工具下载。
使用方法:如图所示。其中下载地址为:
、准备编译环境所需文件
和部分参考了《》一文的内容
icrosoft&Developers&Network (MSDN) by clicking the link above.
vc6补丁,所选的语言和VC的语言一致就可以了
oftware&Development&Kit).
Unfortunately for dial-up users, the ~200MB DirectX SDK is no longer available on CD.
编译x264中的vfw工程时要用到
、设置编译环境
、程序改动
网上下个名为的小工具,或用写字板另存为的方法。
函数的功能是不考虑大小写的情况,比较两个字符串,下没有这个库函数。
部分的代码都是用来检验输入参数的文件扩展名的,注释后表示这一功能丧失,故建议改写。
1.&&&所用的代码为2006年7月26日用TortiseSVN从官方网站站上下载;
2.&&&编译环境完全按照李世平老师所讲的;
3.&&&将build\win32目录下的所有文件(共8个文件)用写字板打开后按照原文件名保存;
4.&&&用写字板将libx264.dsp文件打开并删除376~379行的内容后保存,即删除:&&&&
# Begin Source File SOURCE=&..\..\common\i386\dct-c.c&&&& # End Source File
&&&&&&&&&&&&&用同样的方法将libx264.vcproj打开并删除行内容后保存,即删除:
&&&&&File&File&&RelativePath=&..\..\common\i386\dct-c.c&&
&&&&&&FileConfiguration
&&&&&&Name=&Release|Win32&&
&&&&&&&Tool
&&&&&&&Name=&VCCLCompilerTool&
&&&&&&&Optimization=&2&
&&&&&&&AdditionalIncludeDirectories=&&
&&&&&&&PreprocessorDefinitions=&&/&
&&&&&&/FileConfiguration&
&&&&&&FileConfiguration
&&&&&&Name=&Debug|Win32&&
&&&&&&&Tool
&&&&&&&Name=&VCCLCompilerTool&
&&&&&&&Optimization=&0&
&&&&&&&AdditionalIncludeDirectories=&&
&&&&&&&PreprocessorDefinitions=&&
&&&&&&&BasicRuntimeChecks=&3&/&
&&&&&&/FileConfiguration&
&&&&&&FileConfiguration
&&&&&&Name=&Release64|Win32&&
&&&&&&&Tool
&&&&&&&Name=&VCCLCompilerTool&
&&&&&&&Optimization=&2&
&&&&&&&AdditionalIncludeDirectories=&&
&&&&&&&PreprocessorDefinitions=&&/&
&&&&&&/FileConfiguration&
&&&&&/File&
5.接下来就可以编译了:但在编译时会出现两处“L”和“ULL”有问题的地方(只是在VC6中出现这种问题,VC7和VC8中不会出现这种问题),就直接将“L”和“ULL”删除就行(因为数据类型问题)。即:common\divdict.c的615行&*(uint64_t*)(edge+24)
= SRC(7,-1) * 0x0101ULL;改为&*(uint64_t*)(edge+24) = SRC(7,-1) * 0x0101;和matroksa.c中的431行&if
(delta & 32767ll || delta & -32768ll)改为&if (delta & 32767 || delta & -32768)
通过以上方法就可直接在官方网站下载代码自己编译了。如果大家在编译过程中有什么问题或学习经验,请贴出来共同分享。
& &由于x264的开发平台不是,所以在Windows上用VC编译器来编译x264总是不能一次成功,现将在编译过程中的常见错误总结如下,希望能节省初学者的时间。
&&& x264在VC环境中的编译指南下载地址:
&&& 以下错误是在下试验的错误情况,下会有稍许差别,但也类似。
路径带空格
正在执行自定义生成步骤
nasm: error: more than one input file specified
type `nasm -h' for help
Project : error PRJ0019: 工具从&正在执行自定义生成步骤&
你的文件夹的路径中有空格,如下所示:
把空格前的字符串作为路径,从而导致了错误。
Assembly &..\..\common\i386\predict-a.asm&
'nasm' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
Error executing c:\windows\system32\cmd.exe.
'nasm' 不是内部或外部命令,也不是可运行的程序
:从本站下载版本,拷贝到安装目录的文件夹下就可以了。
没有打补丁
数据类型不支持
没有安装或
文件按没有包含到工程中
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 中被引用
错误,出现无法解析的外部符号。
文件按没有包含到工程中。这是因为的下的工程没有和同步更新所致,当加入了新的源文件,而工程中没有包含进来,就会有这样的错误。像上例就是因为没有包含到工程中所致。
文件没有包含的工程中,一般不会出错,但建议还是包含进来,养成好习惯嘛。
安装了编译器(未试验)
可能是安装了
文件没有设置自定义编译选项
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 中被引用
容易和没有包含文件的错误混淆,其特征就是出现的外部符号都是汇编文件中的。
每个文件都有自定义的编译选项。
解决(针对本例):下,选中这个文件,然后将其设置为:
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:28884次
排名:千里之外
转载:39篇
(7)(25)(9)vc60配置库路径 怎样在一个vc程序中运 - 小小知识站
vc60配置库路径 怎样在一个vc程序中运
最近有网友提出“vc60配置库路径 怎样在一个vc程序中运”等问题,小小知识站提取了各大知名网站有关“vc60配置库路径 怎样在一个vc程序中运”的部分信息,请注意,文中的内容不代表本站的观点,不要相信任何联系方式。下文是关于“vc60配置库路径 怎样在一个vc程序中运”的一些信息:
问题:...要调用其他人编写的另一个vc程序,并且回答:程序A #includestdlib.h void main() { system( b.exe aaa ); 程序B的路径自己掌握吧 } 程序B #includestdio.h void main(char* s) { printf( %s ,s); } 类似问题:在A程序中运行另一程序B后,怎样在不关闭B的情况下,继续 电脑上打不开的,提示在别的程序中打开,结果所有的东 如何在我的程序中运行别的程序?? 怎样在程序中运行其他软件的安装程序呢。在一个vb...... 问题:vc获取本机外网IP
回答:下第三方软件 运行 输入cmd 回车 输入 ipconhig/all 回车即可 即可看到 类似问题:获取本机外网IP C#获取本机外网IP vc获取本机IP VC如何获取本机在Internet网上的地址? 小弟正在学C#网络编程,现在想写一段能获取本地IP的 高手解决:用VC6.0编写一程序,要求实现获取本机网络配置 我用VC编写个端口程序 VC++ 获取本机IP 用VC++编程实现获取本机IP和计算机名,使用socket。要求
问题:如题 电脑上安装了VC2005还用安装VC2005SP1吗?不装VC回答:装了VC2005就不用安装VC2005SP1 不装vc2005就装的话需要安装VS2005 sp1的vcredist_x86,除了要必要的运行时库这些不可少Microsoft.VC80.CRT.manifest同样MFC的Microsoft.VC80.MFC.manifest 类似问题:sql server 2005 安装需要的service pack 1 和 sp 1在哪里下 谁能告诉我一个直接就能的SQL server 2005的地址 摩托罗拉智有S60 visualc2005sp1安装是在...... 问题:VC写的对usb数据读取的程序,usb使用的是飞利浦的PDIUSBD12回答:usb设备不会主动发送数据,只有主机发送读命usb设备令才会发送数据 usb鼠标虽然使用中断传输方式,但实际上也是用轮询来完成的,端点描述里要设置轮询时间 类似问题:vc usb摄像头 capCreateCaptureWindow 狗问问 vc软件开发设计读写usb设备 求用VC读取串口数据的方法 你好,看到你在知的话题的“vc中如何读取usb的数据并 c++中...... 问题:在vs2005中使用MFC
回答:...nitDialog里面 m_hBmp =(HBITMAP)LoadImage(AfxGetInstanceHandle(),strFile,IMAGE_BITMAP,0,0,LR_LOADFROMFILE); strFile是图片路径 GetObject(m_hBmp, sizeof(BITMAP), &m_hBmp); 然后在OnPaint函数里面(rect你自己定义一个矩形范围) CPaintDC dc(this); CDC dcI if(!dcImage.CreateCompatibleDC(&dc)) HBITMAP pOldBitmap = dcImage.SelectObject(&m_hBmp); dc.StretchBlt(rect.left,rect.top,rect.right,rect.bottom,&dcImage,0,0, m_hBmp.bmWidth,m_hBmp.bmHeight,SRCCOPY); ...
问题:oa提示无法创建word2007对话
回答:...一个角色并可以互相对话的网上游世 在AI当中使用区域文字工具时出现了一个对话框:要在路径 郁闷了,VC内在对话框上创建工具条!不知道怎么搞的,
问题:我有一个字符串 D:wenxihahayou.txt 我只想截取他的路径 而不要回答:把字符串放到字符变量中,然后查找左后一个的位置,然后截取字符串即可 类似问题:C++截取字符串进行一个一个的判断输出 如何在c++中取字符串中的一个汉字(mfc) c++里面MFC字符串的截取 VC++中如何截取一段字符串 mfc中,中英文混合字符串截取问题。... 问题:原型频率超越范围怎样办,
回答:...到桌面,怎样回事? 重 装利用程序可能会纠正此问题,解决方法以下:答:如果 原型的安装路径里含有中文,会造成此故障。 我进入游戏后 类似问题:家里下了 原形2,为啥一进就黑屏,说什么频率超出范围 我的电脑配置玩 原形2很卡,是配置低了吗?版的, 我这个配置,能玩 原形2吗? 一打开就频率超出范围,然后就灰屏,最后卡 求电脑大神根据我的电脑配置一个 价比高...
问题:美丽加芬左旋vc原液,准备了解一下美丽加芬左旋vc原液,哪个知回答:我帮您找到了,美丽加芬左旋vc原液,大部分朋友大部分都会问美丽加芬左旋vc原液相类似的问题,我大家看看左旋vc原液在网络上的状况: wvw.letaiqi /log/zuoxuanvcyuanye ,最好与评论最棒的左旋vc原液全在那儿,如果有要选择的朋友可以保存好使这个,最主要的是查看其和购买者的反馈情况,...... 问题:64位系统,安装64位xsteel 网友说vc2005运行库的问题详情题是因回答:同样问题,不过我的是vista系统,32位 类似问题:WIN7 普通版64位 安装VC2005,VC2008运行库,均显示 。32位,装vc2005运行库的时候出现1953
64位的VC10X86能卸载吗? 总是跳出这个窗口,尝试先安装VC2005 要一个游戏运行库:vc、2010,可上有 VC运行库 VC2005运行库vcredist 在神 求 VC 2005运行库的8...... 问题:VC若何获取cmd法度榜样窗口里面的文字吗回答:在程序窗口,右击,标记,,按住左脚选择你要的文字 类似问题:vc框文本出现问题 请教C#程序是否可以正在运行的VC程序窗口中控件 如何在获取指定的窗口,然后在里面的框输入内容?要 vc中定义文本窗口模式和设置光标位置的函数是什么啊? VC 对话框类中如何文档类成员数据... 问题:java环境变量怎么设置啊
回答:...asspath是不存在的。 点“”,然后在变量名写上JA_HOME,顾名其意该变量的含义就是java的安装路径,呵呵,然后在变量值写入刚才安装的路径“C:jdk1.6”。(注: 如果安装的路径不是磁盘C或者不是在jdk1.6这个夹,可对应修改。以下 类似问题:java环境变量的配置 java环境变量设置?Java环境变量怎么设置? java环境变量设置 java环境变量怎么设置 Java环境变量怎么设置
问题:vc++ 创建一个MFC单文档成学,分割成两个窗体,左边是一个树回答:在VC6.0中这就需要使用到CSplitterWnd类。CSplitterWnd看上去像是一种特殊的框架窗口,每个窗口都被相同的或者不同的视图所填充。当窗口被切分后可以使用鼠标移动切分条来调整窗口的相对尺寸。 CSplitterWnd的构造函数主要包括下面三个。 BOOL Create(CWnd* pParentWnd,int nMaxRows,int nMaxCols,SIZE sizeMin,CCreateContext* pContext,DWORD d...... 问题:玩CF的时候FPS都有160多玩LOL为什么只有60
回答:你应该开了垂直同步吧,垂直同步会锁定在60FPS 关闭就可以了! 先开高效果, 看看FPS在多少左右, 超过120就开最高的效果! 类似问题:我家电脑这个配置,玩lol,cf,画面都蛮卡,lolfps值30,fc 还有CF的时候FPS不稳定有时候40到60 刚进去的时候fps卡到10 大神看看我这配置玩lol开高特效fps上60都累,玩cf 我本玩LOL
问题:这个是什么原因?回答:编译没有找不到头crypt.h,与是否连接access无关 类似问题:VC6.0运行程序出现错误fatal VC2008编译的时候出现fatal MFC出现fatal vc编译错误的所有error的列表 为什么每次编译VC++程序都会出1083错误?fatal...
分享给小伙伴们:
也许你感兴趣

我要回帖

更多关于 vc6.0无法编译 的文章

 

随机推荐