MAYA C++ API | 從編譯環境到 MAYAPluginWizard 精靈安裝 – 可能錯誤篇
本篇記錄所有遇到的問題,以供大家參考,我想這可以很大程度幫助大家少繞一點彎路。 (最後更新 2013-11-08)
系列目錄
一、MAYA C++ API 編譯環境設置 – with Visual Studio
二、我的安裝經驗,從C++到精靈安裝 – 步驟篇 (不提及各種錯誤訊息)
三、我的安裝經驗,從C++到精靈安裝 – 可能錯誤篇
我的安裝經驗,從C++到精靈安裝 – 可能錯誤篇
環境確認
再次描述我的環境, Windows 7 64bit + Visual Studio 2010 Express + Maya 2013 64 bit
由於我選擇的是可免費下載的 Visual Studio 2010 Express ,所以建置過程會稍微與一般 Visual Studio 2010 其他版本使用者不同。除了編譯的部份可能會有很多問題外, Express 版也牽涉到精靈本身的安裝步驟,會有微小的不同。
可能錯誤一(精靈)、
安裝後,Visual Studio 內完全沒看到精靈圖示
執行一下C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat 使 Visual Studio 環境重建一次。
可能錯誤二(精靈)、
可以看到精靈圖示,點下去卻沒有反應
這可能是因為你的檔案複製錯地方囉!
MayaPluginWizard.vsdir 、MayaPluginWizard.vsz、MayaPluginWizard.ico三個檔案要複製的路徑,所有官方文件都會寫: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcprojects ,但這是給非 Express 版的 Visual Studio。
Visual Studio Express 請複製到 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\Express\VCProjects
或者你可以像我一樣,兩資料夾個都放。然後確認 MayaPluginWizard 資料夾有放到 Microsoft Visual Studio 10.0\VC\VCWizards 下,執行 Microsoft Visual Studio 10.0\VC\vcvarsall.bat
可能錯誤三(精靈)、
精靈點下去有視窗出來,但是設定完按下 Finish 時,跳出訊息:找不到專案檔 ´HelloWorld´ 中參考的平台 x64
這是因為 Express 版沒有 x64 的編譯環境,所以你必須另外安裝 Windows SDK 才行,如果裝好精靈就編譯,會遇到訊息:「找不到專案檔 ´HelloWoeld´ 中參考的平台 x64」,你也可以按照錯誤訊息去發現: ProgramFiles\MSBuild\Microsoft.cpp\v4.0\Platforms 資料夾下,只有 Win32,沒有 x64 的工具。
圖一、錯誤訊息:找不到專案檔 `HelloWorld` 中參考的平台 x64
圖二、Platforms 資料夾下沒有 x64 的編譯工具,請裝 Windows SDK 7.1
好了,請參考網頁 HOW TO:將 Visual C++ 專案設定成以 64 位元平台為目標 by MSDN, 總之你要先安裝 Windows SDK 7.1 (官網下載)
唔 . 然後如果你剛裝好 Windows SDK 7.1 就去寫程式並編譯,你會遇到下面這個問題。
可能錯誤四、(編譯)
LINK : fatal error LNK1123: failure during conversion to COFF …
圖三、error LNK1123 錯誤
你按下 F5 想編譯,但是出現了錯誤訊息 LINK : fatal error LNK1123 : failure during conversion to COFF …八啦八啦的…看不懂 。
這是因為你剛安裝好 Windows SDK後, Program Files\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe 被更動,但是更動內容有錯誤 。其他人遇到這問題是因為電腦原本有 Visual Studio 2010 ,裝了Visual Studio 2012後碰到這個問題,除了找別的舊cvtres.exe概回來以外,還可以安裝 Visual Studio 2010 SP1 (下載網頁)
fatal error LNK1123 參考資料:
- error LNK1123: failure during conversion to COFF: file invalid or corrupt by Level Up
- LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt after installing VS2012 release preview by Master
- 「LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt」錯誤 by 知識記錄
嗯…如果你安裝完 Visual Studio 2010 SP1 就再去編譯,你會遇到下個問題 (有沒有開始不耐煩了?)
可能錯誤五(編譯)、
媽呀! 為什麼安裝打開專案後,屬性裡頭所有相關的設定都消失了?
媽呀! 為什麼安裝打開專案後,屬性裡頭所有相關的設定都消失了? 只剩下一個標題 「架構與參考」
圖四、所有環境資料都消失了!?
這是因為 Visual Studio 2010 SP1 的安裝檔有嚴重的 Bug ,他可能會移除你的 Visual C++ 編譯器,所以你要下載修正檔才行,請參考網頁:
Windows SDK 7.1的Visual Studio 2010 SP1相容性問題更新檔 by [賴榮樞]的軟體資訊誌
安裝順序應該是 Visual Studio 2010→Windows SDK →2010 SP1→ 修正檔,如果你之前的順序有誤,建議移除乾淨後,以 CCleaner 軟體把登錄檔也清乾淨、Visual Studio 資料夾確實刪除,然後再按照此順序重新安裝一次。
…. 嗯 … 你有沒有發現我最後一句話不是「,就可以了」?
嗯…是的,如果你安裝完 2010 SP1 修正檔後,就立刻再去編譯,你會遇到下個問題 。
可能錯誤六(編譯)、
LNK1181 error: cannot open file ´kernel32.lib´
訊息 LNK1181 error: cannot open file ´kernel32.lib´
圖五、LINK 1181 error: cannot open file ´kernel32.lib´
這是因為你剛設置好的環境裡,沒有把 kernel32.lib 的路徑納入專案設定,所以,找到 64 位元的 kernel32.lib 路徑,並填入路徑、設定變數即可。
我安裝的是 Windows SDK 7.1 ,所以路徑應該是 :C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\x64\kernel32.lib
為求保險起見,我建議你可把下述兩路徑都加入:
- C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\amd64
- C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\x64
你需找到專案的屬性頁裡面,下述兩個欄位 (請參考下圖六):
- 組態屬性→VC++目錄→程式庫目錄,並加入路徑
- 組態屬性→連結器→一般→其他程式庫目錄,並加入路徑
加入方法是,在欄位右側點一下左鍵,跳出一個小選單,選取 <編輯> ,然後在跳出視窗內操作即可。請參考下圖:
圖六、加入程式庫路徑的操作方法
好了,假設你的 kernel32.lib 沒問題,你就應該可以按下 F5 ,完成Hello World 的編譯,如何安裝請參考 MAYA C++ API Hello World !
可能編譯錯誤七(編譯)、
error LNK 2019、error LNK2001、error LNK 1102 unresolved external symbol (翻譯、無法解析的外部符號 )
圖七、 unresolved external symbol 相關錯誤
喔! 這個原因是你可能把32位元的 kernel32.lib 弄進來了,檢查一下,有可能你把路徑打成 C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib ,這下面也有 kernel32.lib 喔! 但那是32位元的。
或是你的目錄優先順序不對,你還有其他有存放32位元 kernel32.lib 路徑,優先於64位元kernel32.lib路徑,結果 Visual Studio 就抓成32位元 kernel32.lib ,那麼當然出錯。
理論上,除開這個問題,你應該初步可以編譯出一個 Hello World 囉!
其他問題、萬一我的電腦環境,有軟體版本不同怎麼辦?
雖然我無法預期你可能遇到的問題訊息,但假如你懷疑有可能是版本不同導致的問題,我提供幾個意見給你:
(1) 你懷疑是 Visual Studio 版本問題
請找到 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\Express\VCProjects\MayaPluginWizard
仔細看路徑,這是你親手安裝的精靈噢! 還沒忘記吧?XDDD 安裝過程所複製的三個檔案,其中一個是MayaPluginWizard.vsz,請你用文字編輯器打開,修改這一行:
Wizard=VsWizard.VsWizardEngine.10.0
10.0 代表 Visual Studio 2010 , 11.0 是 Visual Studio 2012, 9.0 是 Visual Studio 2008
(2) 你懷疑是 .NET Framework 版本問題
請找到 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\VCWizards\MayaPluginWizard\MayaPluginWizard\Templates\1033, 編輯 plugin.vcxproj 檔案,找到第二或三行,內容如下:
<Project DefaultTargets=”Build” ToolsVersion=”4.0″ xmlns=”http://schemas.microsoft.com/developer/msbuild/2003>
那個 ToolsVersion=”4.0″ ,代表 .NET Framework 4.0 ,請按照你的軟體版本修改。
試試看吧!
nedfel
這不賴!!
我也是Express受害者
只是當下沒有很急迫就放著了
hank
嗨! :-)
看來不是只有我覺得 MS 的編譯環境難以理解呢! (笑)
哈哈!有這些可能錯誤的列表出來了,您有空可以再裝來玩一下摟!