MAYA C++ API | 從編譯環境到 MAYAPluginWizard 精靈安裝 – 可能錯誤篇

本篇記錄所有遇到的問題,以供大家參考,我想這可以很大程度幫助大家少繞一點彎路。 (最後更新 2013-11-08)

系列目錄


一、MAYA C++ API 編譯環境設置 – with Visual Studio

二、我的安裝經驗,從C++到精靈安裝 – 步驟篇 (不提及各種錯誤訊息)

三、我的安裝經驗,從C++到精靈安裝 – 可能錯誤篇

四、MAYA C++ API Hello World !


我的安裝經驗,從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 的工具。

pic09

圖一、錯誤訊息:找不到專案檔 `HelloWorld` 中參考的平台 x64

pic10

圖二、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 …

pic11

圖三、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  參考資料:

嗯…如果你安裝完 Visual Studio 2010 SP1 就再去編譯,你會遇到下個問題 (有沒有開始不耐煩了?)


可能錯誤五(編譯)

媽呀! 為什麼安裝打開專案後,屬性裡頭所有相關的設定都消失了?

媽呀! 為什麼安裝打開專案後,屬性裡頭所有相關的設定都消失了? 只剩下一個標題 「架構與參考」
pic12

圖四、所有環境資料都消失了!?

這是因為  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´
pic13

圖五、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++目錄→程式庫目錄,並加入路徑
  • 組態屬性→連結器→一般→其他程式庫目錄,並加入路徑

加入方法是,在欄位右側點一下左鍵,跳出一個小選單,選取 <編輯> ,然後在跳出視窗內操作即可。請參考下圖:

pic14

圖六、加入程式庫路徑的操作方法

好了,假設你的 kernel32.lib 沒問題,你就應該可以按下 F5 ,完成Hello World 的編譯,如何安裝請參考 MAYA C++ API Hello World !


可能編譯錯誤七(編譯)、

error LNK 2019、error LNK2001、error LNK 1102  unresolved external symbol (翻譯、無法解析的外部符號 )

pic15

圖七、 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 ,請按照你的軟體版本修改。

試試看吧!


You Might Also Like

2 Comments

  1. nedfel

    這不賴!!
    我也是Express受害者
    只是當下沒有很急迫就放著了

    1. hank

      嗨! :-)
      看來不是只有我覺得 MS 的編譯環境難以理解呢! (笑)

      哈哈!有這些可能錯誤的列表出來了,您有空可以再裝來玩一下摟!

Leave a Reply

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料