2010年12月7日 星期二

[筆記] shrUtils/oclUtils for MFC

如果你是使用nVidia CUDA Toolkit v3.x來開發OpenCL的話,一般都會利用shrUtils與oclUtils這二個靜態連結(.lib)來簡省一些開發時間。

如果在MFC中直接連結範例建構出來的檔案,通常會產生很多的link error。這是因為nVidia的專案使用的Runtime Library模式與MFC不同。我會修改shrUtils與oclUtils設定讓他能相容於MFC。

Step 1. 打開shrUtils Project,並開啟專案的Properties。
Step 2. 進入Configuration Properties的General頁面。
Step 3. 將Debug模式下的Target Name改為$(ProjectName)NC32D;Release模式下改為$(ProjectName)NC32。(VS 2010限定)
Step 4. 將Debug / Release模式下的Use of MFC都改為Use MFC in a Shared DLL
Step 5. 進入[C/C++]→[Code Generation]頁面。將Debug模式下的Runtine Library改為Multi-threaded Debug DLL (/MDd);Release模式下改為Multi-thread DLL (/MD)
Step 6. 進入[Librarian]→[General]頁面。將Debug模式下的Output File改為$(OutDir)$(ProjectName)NC32D.lib;將Release模式下改為$(OutDir)$(ProjectName)NC32.lib。
Step 7. Rebuild Debug / Release。

Step 8. 打開oclUtils Project並重覆上面的2-6步驟。
Step 9. 在[Librarian]→[General]頁面中。將Debug模式下的Additional Dependencies更改為shrUtilsNC32D.lib;將Release模式下更改為shrUtilsNC32.lib;
Step 10. Rebuild Debug / Release。

  • 更改Output檔名是為了保留原有的static link給範例程式能繼續使用。
  • 先建立shrUtils再建立oclUtils的順序別弄錯了。
  • NC是我隨手取的,當然可以取別的名字。