可能是一个愚蠢的问题:我有一个WinXP 32位桌面,用于使用Visual Studio 2005 / Intel COmpiler 10.1编译(32位)dll。我想生成我的dll的64位版本。怎么做?与Visual Studio相关的答案很有意思,但那些针对英特尔编译器方面的问题会得到额外的布朗尼点。
提前致谢。
ALEX
答案 0 :(得分:1)
我制作的这个小指南是使用最新的PSDK >>使VC ++ 2005 Express编译64位(尽管我不确定它有多好)
我假设您已经安装了VC ++ 2005 Express并安装了PSDK,并在VC ++中激活了Win32应用程序并运行64位Windows(它也可能在32位Windows中运行,但exe不会在该环境中运行)< / p>
1)开始 - &gt;所有程序 - &gt;适用于Windows Server 2003 SP1的Microsoft Platform SDK - &gt; Windows XP 64位构建环境 - &gt;设置Windows XP x64构建环境(调试/零售)&lt; - 此时不会影响哪一个
2)启动VC ++ 2005 Express IDE运行带有/ USEENV swich的VCExpress.exe文件:[VC ++ 2005 Express的安装目录] \ Common7 \ IDE \ VCExpress.exe / USEENV这将清除所有默认bin / lib / include路径,只添加“设置Windows XP x64构建环境(调试/零售)”批处理文件为您设置的那些。
3)打开您的应用程序或创建一个新应用程序。
4)编辑应用程序的属性(项目 - &gt;属性)并将此设置更改为此值。
C / C ++ - &gt;一般 - &gt;调试信息格式:程序数据库(/ Zi) C / C ++ - &gt;代码生成 - &gt;基本运行时检查:默认 链接器 - &gt;高级 - &gt;目标机器:未设置 链接器 - &gt;命令行 - &gt;其他选项:/ MACHINE:AMD64
现在它应该可以编译为64位(我想我什么都不会忘记)
尽管我收到了这个错误: 错误PRJ0002:从“C:\ Program Files \ Microsoft Platform SDK \ Bin \ mt.exe”返回错误结果128。
但是通过将VC ++ 2005 Express安装附带的mt.exe复制到PSDK / Bin目录来解决它,从而覆盖了PSDK / bin / mt.exe。
我差点忘了的另一件事。你可能会遇到这里描述的错误:http://support.microsoft.com/?id=894573将bufferoverflowU.lib添加到项目中将解决这个问题。
注意: 我没有测试任何东西,只是编译了一个简单的Windows应用程序和一个控制台应用程序,并且TaskManager在进程之后没有说* 32,如果它是32位的话。我不知道它是否适用于更大的项目或任何东西,因为我让它在10分钟前工作:)
但我有一个关于我新创建的64位应用程序的问题(只是一个由内置向导创建的简单“hello world”窗口)我怎么能确定它真的是64位? Taskmanager说这是因为它没有* 32但是足够的证明了吗?
编辑: 您可能需要复制msvcrtd.dll&amp;来自PSDK \ NoRedist \ Win64 \ AMD \的msvcp60d.dll到他们所属的地方(真的不知道)我把它们放在Windows \ System32中
http://www.codeproject.com/KB/system/64BitOSAndPortingIssues.aspx
答案 1 :(得分:0)
你可以直接在vs2005或2008中编译它,因为属性“任何CPU” 但如果你有,取消“com see”属性 也许你应该将它复制到system32而不是64,然后RegAsm it
答案 2 :(得分:-1)
在项目i解决方案资源管理器中选择属性。在Build - Platform下,选择“Any CPU”。