如何编译64位版本的我的DLL?

时间:2009-07-21 13:26:37

标签: windows visual-studio compiler-construction

可能是一个愚蠢的问题:我有一个WinXP 32位桌面,用于使用Visual Studio 2005 / Intel COmpiler 10.1编译(32位)dll。我想生成我的dll的64位版本。怎么做?与Visual Studio相关的答案很有意思,但那些针对英特尔编译器方面的问题会得到额外的布朗尼点。

提前致谢。

ALEX

3 个答案:

答案 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://social.msdn.microsoft.com/Forums/en-US/Vsexpressvc/thread/d0770dde-56e5-4a28-acb0-30908c0f7ebd的信息 另请阅读:

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”。