2009-07-21 29 views
0

可能是一個愚蠢的問題:我有一個WinXP 32位桌面,我用Visual Studio 2005/Intel COmpiler 10.1編譯(32位)dll。我想生成我的dll的64位版本。怎麼做?與Visual Studio相關的解決方案很有意思,但那些解決英特爾編譯器方面的問題會得到額外的布朗尼分。如何編譯我的dll的64位版本?

在此先感謝。

亞歷

+0

你在寫什麼語言? – 2009-07-21 13:29:02

回答

1

這是我做的小指南是將T 他的VC++ 2005速成採用了最新的PSDK(altough我不知道它有多好作品)

我會認爲64位編譯你已經安裝了VC++ 2005 Express和PSDK,並啓動了VC++編譯的Win32應用程序並運行64位Windows(也可能在32位窗口中運行,但exe不會在該環境下運行)

1) >所有程序 - >用於Windows Server 2003 SP1的Microsoft平臺SDK - > Windows XP 64位構建環境 - >設置Windows XP x64構建環境(調試/零售)< - 不會mather此刻哪一個

2)啓動VC++ 2005 Express IDE運行VCExpress.exe文件與/ USEENV swich:[您安裝目錄VC++ 2005 Express] \ Common7 \ IDE \ VCExpress.exe/USEENV這將清除所有默認的bin/lib/include路徑,並且只添加那些'Set Windows XP x64 Build環境(調試/零售)'批處理文件爲您設置。

3)打開您的應用程序或創建一個新的應用程序。

4)編輯應用程序的屬性(項目 - >屬性)並將此設置更改爲此值。

C/C++ - >常規 - >調試信息格式:程序數據庫(/ ZI) C/C++ - >代碼生成 - >基本運行時檢查:默認 鏈接器 - >高級 - >目標機器:未設置 鏈接器 - >命令行 - >附加選項:/ MACHINE:AMD64

現在

它應該能夠編譯64位(我想我沒有帶任何東西忘了)

altough我得到這個錯誤:錯誤 PRJ0002 :錯誤結果128從'C:\ Program Files \ Microsoft Platform SDK \ Bin \ mt.exe'返回。

但解決它通過將VC++ 2005 Express安裝附帶的mt.exe複製到PSDK/Bin目錄,從而覆蓋PSDK/bin/mt.exe。

另一件事我差點忘了。你可能會得到這裏描述的這個錯誤:http://support.microsoft.com/?id=894573添加bufferoverflowU.lib到項目將解決這個問題。

注: 我沒有帶測試它任何事情剛剛編譯了一個簡單的Windows應用程序和控制檯應用程序和任務管理器不說* 32的過程之後,如果它是32位的它會做。我不知道它是否適用於較大的項目或任何因爲我得到它像10分鐘前工作:)

但我有一個關於我新創建的64位應用程序的問題(只是一個簡單的「你好世界」窗口創建由內置的嚮導)我怎麼能確定它真的是64位?任務管理員說這是因爲它沒有* 32但是有足夠的證據嗎?

編輯: 你可能需要複製從PSDK \ NoRedist \ Win64的\ AMD \到他們屬於這裏(真的不知道)的msvcrtd.dll & 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

你的項目我的解決方案資源管理器中選擇化子性質。在Build - Platform下,選擇「Any CPU」。

+0

我打算這麼說,但後來我注意到C++項目有一個不同的屬性頁面,Build不在那裏。 – Powerlord 2009-07-21 13:37:58

0

你可以在VS2005直接編譯或2008年,因爲屬性「任何CPU」 ,但取消屬性「COM看到」如果你有 也許你應該把它複製到SYSTEM32而不是64,然後RegAsm它

相關問題