最近一致在尋找一個很好的幾何實體布爾操作的庫,找到了小巧精緻但特別功能要收費的的sgCore,強大的不知道怎麼使用的openCASCADE,GNU開源UNIX系統的GNU Triangulated Surface Library(GTS),還聽聞一些收費的HOOPS等。
最開始,sgCore非常讓我滿意,精巧的結構,很便於使用的編程風格,強大的功能,小巧的身材~~~可是,當需要用到將三角形模型轉換成實體模型的時候,就要收費了。最低收費標準400美元,我的天啊,搶人~~~
最終還是放棄了這個美麗的“陷阱”。
openCASCADE庫,借用論壇上坐沙發流行的一句話:很好,很強大!無與倫比的功能,包括CAD/CAM的方方面面,從二維樣條曲線,到三維的實體操作,樣樣俱全,可是,太大了~~~600多M的安裝包,加上200M的文檔,來源程式還是*.cxx的。強大到根本搞不清楚怎麼入手,最終放棄了~~~~~~
最後的希望來自於GNU的GTS,小巧,免費,精緻,強大。唯獨一個缺點是目前只有UNIX版本的,雖然寫了可以在WIN32下面編譯,但是其MAKEFILE還是VC6時代的,還需要3個依賴包。而這兩個做好的WIN32下的依賴包還是VC6編譯的,即便在VC++2005下面吧GTS編譯成功了,也用不起。因為這兩個DLL用的是MSVCRT.DLL,而VC++2005編譯的GTS庫用的MSVCRT80.DLL,會導致不相容。
查閱了大量的資料,發現解決方案有如下:
1、使用cygwin編譯。缺點很顯然,我寫程式也得在cygwin下面去編譯,顯然有些不太方便。而且編譯出來的DLL還不好用。
2、用VC++2005全部重新編譯所有的依賴包。
3、放棄~~~~
最終選擇了2。拚死活命也要將GTS編譯出來。
第一個難題就是glib的編譯問題。因為GTS需要用到glib,所以就到網上尋glib的win32版本。竟然,還是只有那個VC6的版本。還好,glib最新的原始碼中已經包含了VC++2005的makefile了。還需要找gettext和libiconv的WIN32版本。
經過查詢,找到gettext 0.14.4,據說可以編譯成功。試了N久,發現少了relocate.h這個標頭檔,即使弄上去了編譯也出問題。又是google,找到一個人的問題和我一樣,解決方案是用0.14.6版本編譯。果然通過了。幸福~~~
編譯libiconv也遇到了一些莫名其妙的問題,都是一些什麼玩意兒沒有定義啊,什麼宏沒有定義這些,很煩人。glib也是一些win32下老的makefile需要更新。……
4天時間都在搞這些玩意兒,徹底記不清楚具體是怎麼把他搞成功的了。最後做了一個安裝包,只需執行一個批處理,傻瓜化的就完成了編譯安裝。~~~
PS:準備又要開始研究SMS相關的東西了~~哎,一天忙啊
下載:http://www.hesicong.net/pjblog/article.asp?id=271