⑴ WIN7 64位系统,VS2010 x64中PCL all-in-one配置,编译时出现问题,具体如下列图片所示,求大神解答。
1、出现错误:fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
解决方案:项目\属性\配置属性\清单工具\输入和输出\嵌入清单:原来是“是”,改成“否”。
Q:该方法治标不治本,每次新建一个项目时都要重新配置。还有为什么这么做就能解决该问题呢?
A:1)治本的方法:
<1>项目\属性\配置属性\清单工具\输入和输出\嵌入清单:原来是“是”,改成“否”。
<2>项目|项目属性|配置属性|连接器|清单文件|生成清单 “是”改为“否”。
<3>若以上两步后仍没解决问题,则按照以下方法解决:
查找是否有两个cvtres.exe。一个是C:\Program Files(x86)\Microsoft Visual Studio 10.0\vc\bin\cvtres.exe, 另一个是C:\Windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe。右键属性|详细信息 查看两者版本号,删除/重命名较旧的版本,或者重新设置Path变量。
删除旧版本的cvtres.exe后,就不需要每次都设置配置了。
2)为什么这么操作可以解决问题?笔者未查明原因,同仁们有清楚的可以给出评论。
2、1>lena.obj : error LNK2019: 无法解析的外部符号 _cvReleaseImage,该符号在函数 _main 中被引用
1>lena.obj : error LNK2019: 无法解析的外部符号 _cvDestroyWindow,该符号在函数 _main 中被引用
1>lena.obj : error LNK2019: 无法解析的外部符号 _cvWaitKey,该符号在函数 _main 中被引用
1>lena.obj : error LNK2019: 无法解析的外部符号 _cvShowImage,该符号在函数 _main 中被引用
1>lena.obj : error LNK2019: 无法解析的外部符号 _cvNamedWindow,该符号在函数 _main 中被引用
1>lena.obj : error LNK2019: 无法解析的外部符号 _cvLoadImage,该符号在函数 _main 中被引用
1>c:\users\yunyan\documents\visual studio 2010\Projects\lena\Debug\lena.exe : fatal error LNK1120: 6 个无法解析的外部命令
1>
1>生成失败。
1>
1>已用时间 00:00:01.52
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
解决方案:出现错误的原因可能有二,一种是系统配置不对(如x64位下仍使用Win32则错),另一种是少添加了库。笔者的是第一种原因,因为一直习惯了在x86下编写Win32程序,所以编译的时候仍使用了Win32,那么必然运行失败。该问题怎么破呢?如下:
右击项目名称,选择“属性”,弹出页面的最上方中间一项“平台”选择x64,在该平台下按照OpenCV中文网的配置过程。
⑵ 如何正确安装VS2008用于基于x64编程
我和你用的一样,win7_x64+VS2008+IVF11_x64,一点问题销档也没有,你检查一下你安装VS2008时装64位支持了么?我不记得是不是默认的了,另外你说“选项没有显示64位的编译做斗举器”,又说“选择X64编译时弹出对话框……”,是什么意思?如果选项里没有X64的选项,你可以点新建,注意不要从“win32”复制,改为“空纯碧”,你试试,希望能帮到你
⑶ VS2013 ATL项目由win32转为x64属性后 编译成功后无法自动注册dll
你可以在工程属性中自定义生成事件中添加手动注册滑坦。
设置方法, 选中工程,右键菜单【属性】-【生成事件】-【后期生成事件】-【命令行】中春余输入信森桐
regsvr32 /s $(OutDir)$(TargetName)$(TargetExt)
⑷ 如何编译64位dll程序,有几种情况,在32位XP上用VC++6.0或者VS2010该怎么编译64位的dll。
在64位的操作系统上用vs软件编译的dll默认就是64位。
在32位XP上用VC++6.0编译64位的dll,需要安装sdk(最新版本是sdk2003),在开始菜单——sdk——open build environment window——windows server 2003 64-bit build environment——set win svr 2003 x64 build env进入命令行,从命令行调用msdev,将vc选项里的include和lib的第一个默认路径设为sdk目录下64位头文件和库的路径,编译出的dll似乎就是64位的了。这个是从网页上看到的,没实践过。
在32位XP上使用vs2010就简单多了,新建一个项目(解决方案),加入代码,设置X64,编译生成即可。
⑸ VS2013怎么编译成64位程序
⑹ vs2005 64位编译是变成编译32位
早期在vs2008上的一个测试,希望能够帮助你
一、win32改为x64编译
我采用衫尘了vs2008平台,以下都是基于此平台将win32编译改为x64编译悄判
这里以Debug模式为例,起初为Win32平台,要改成x64,如果有可直接选择,否则需要新建,之后为
然后打开vs的项目->属性或运禅->配置属性->连接器,
在“高级”选项中,目标计算机为MachineX64(/MACHINE:X64)
在“命令行”选项中,将X86改为X64
平台选择x64,若没有则新建之
⑺ vs2015c语言x64用什么编译器,,, 我查过c语言用cl编译器,但是cl编译的是32位,请问
X64和X86是同一个编译器,只是编译选项不同
⑻ 如何安装和使用VS 2008的64位编译器
v
安装方法/步骤
1
首先,进入到控制面板,找到关于对应的vs08,卸载。
在控制面板中的程序和功能选项中,选择Microsoft Visual Studio Team System 2008 Team Suite - 简单中文,然后右击选择“卸载/更新”。
2
之后,进入到卸载的页面,单击“添加/删除功能”,如下图。
3
然后会进入到选项页面,在语言工具一栏中,选择Visual C++中将X64编译器和工具,如下图。
4
之后,便进入到安装的页面。等待即可。
5
在安装完成后,通过开始菜单中,即可看到“Visual Studio 2008 x64 兼容工具命令提示”。
END
配置64位编译器
1
首先,打开一个工程项目,选择“配置管理器”(或者右击项目选择属性,进入到属性页,点击“配置管理器”)
2
接着,在活动解决方案平台选项中,选择“新建”,如下图。
3
之后,在新建页面,选择平台x64(在没安装64编译器情况下,则不会有X64选项),点击“确定”。
4
最后,选择相应的64位平台,进行编译即可实现64位程序的编译。
⑼ 如何安装和使用VS 2008的64位编译器
1. 选择“Build” – “Configuration Manager”菜单,打开配置管理器。点击新建解决方案平台。
2. 选择“x64”平台,点击确定按钮。
3. 这时候配置管理器中的平台已经改成刚才选择的x64了,这时候编译出来的就是64位程序了。可以在工具栏的平台下拉框中快速切换目标平台。
4. 如果在选择平台的下拉列表里找不到x64,可能是没有安装x64编译支持。在VS安装程序里再装上就可以了。
⑽ vs有没有32位与64位的区别
visualstudio没有专门的64位版,但32位版可以在64位系统上面正常使用。
由于操作系统内存分配的不同,导致软件开发过程中,需要编译不同版本的软件。
编译程序根据需要选择不同的编译环境,x86和win32为32位程序,x64为64位程序,可以选择不同的编译条件形成不同位的软件。
代码中的基本数据类型,会根据操作系统的位数来分类内存大小。
如int型在32位操作系统下为4字节,在64位系统下为8字节。
因此在64位上对int型数据操作,编译生成32位的程序,有可能导致int型越界,软件出现问题,32位的程序在64位操作系统上运行,由于64位操作系统的寻址和偏移问题,也有可能导致程序在运行过程中,计算结果与32位系统不一致。
64位操作系统理论上能够箭筒32位和64位软件,32位操作系统不能运行64位程序。
在vs中,x64生成的程序只能在64位系统中运行。如果用户用的是32位的系统(比如XP),则运行不了程序。
x32生成32位程序,由于64位系统也能运行32位的程序,所以这个选项跟AnyCPU一样可以同时运行在两种系统中,但效率没有AnyCPU高,因为64位的软件跟CPU交互的数据要比32位的接近大一倍。
所以当要把项目代码转移到另一台计数机时,就要考虑这个问题。假如原来选择的目标平台是x64,新电脑的系统是32位,当你按F5调试运行时,则跑不起来,这时把目标平台改成AnyCPU或者x32就能解决了。
(10)vs编译x64扩展阅读:
如果项目引用有32位的dll(c++编译生成的),则只能选择32位平台,否则也会报错,整个项目要保持一致。
在项目调试的过程中,可以看到32位与64位程序加载的dll不同。
32位程序从system32中加载dll;而64位程序从syswow64中加载dll。
64bit程序在x86-64处理器上并不会带来明显的性能提高,它只是增加了处理器的寻址范围,可以使用更大的内存。而对于VS这种并非内存敏感的程序,并不十分需要迁移到64bit下。
另外,还有一个历史原因,就是微软一直没有完成64bit下的JIT调试器的EditandContinue功能,这是因为64bit的JIT是C++团队做的,和原生CLR团队的32bitJIT有很多不同。
如果微软推出了64bit的VS,那么调试的体验会受到限制,这也是为什么微软一直以来没有推出64bitVS的原因。