最近沒有續寫 idlcpp 的教程, 因為忙著對它進行大幅度的修改。
一開始本是計劃用idlcpp對付新寫的代碼,讓這些新寫的代碼能夠很容易提供給腳本使用。後來又希望能將大量現存的代碼移植過來,畢竟有大量的C/C++程序庫。若能將這些庫移植到腳本語言中,必將提高腳本語言的實用性。於是就開始嘗試移植現有的一些庫,然後就發現了一些問題。
1. 模板功能太弱。
2. 重載函數限制比較大。
3. 沒有運算符重載。
4. 因為用ptr代替*,用ref代替&,移植時改起來麻煩。
針對上述問題,決定對idlcpp進行修改。現在終於告一段落,經試驗 std::vector 移植基本沒有問題,估計對付其他一些不是很變態模板庫基本沒有問題。但是std::vector的移植版在性能上有大大的問題,在lua中測試與lua的表相比有數倍的性能差距,估計是因為過度的包裝。這一點也是沒有辦法,為了通用必然要付出一些性能代價。當然這不是典型的C++腳本混合編程的情況,所以也不必過分擔心。
近期考慮移植一些常用的C/C++庫,首先是C標准庫和C++標准庫。然後撿一些自己會用到的進行移植。
由於idlcpp在語法層面也進行了一些改動,所以以前寫的教程都進行了修改。
其中第一篇在這
C++混合編程之idlcpp教程(一)