用雙重標準來說,跟mono C#比,AngelScript顯然功能要弱得多,但是要小得多,源碼只有幾十個文件。跟Lua比,AngelScript功能要強大的多,體積性能上大家差不多。AngelScript是中間的選擇,所以有時候也很尷尬。
雖然很遺憾它沒有流行開來,但客觀來說絕對是一個優秀的腳本語言。作者維護的頻率也很快,而且C++源碼風格少有的清晰,提供的接口異常的友好,想想看你用一個腳本語言卻不需要在官方API上再封裝一層是什麼體驗。想學習腳本開發的話,是非常不錯的資料。
2、 將SDK壓縮包解壓
3、 在visual studio 2010 上新建一個 AngelScriptTest1 的工程
4、 將解壓後的SDK下 \AngelScript\sdk\samples\tutorial\source中的main.cpp 拷貝到AngelScriptTest1 的源文件下
5、 將\AngelScript\sdk\angelscript\include下的頭文件拷貝到AngelScriptTest1 的頭文件目錄下,編譯後:
fatal error C1083: 無法打開包括文件:“angelscript.h”: No such file or directory
將該頭文件拷貝到工程目錄下:D:\My_VS2010\AngelScriptTest1
並配置工程屬性:參見http://www.cnblogs.com/txg-blog/archive/2011/03/07/1974857.html
6、 將D:\My_VS2010\AngelScript\sdk\add_on\scriptstdstring目錄下的文件:
scriptstdstring.h 和 scriptstdstring.cpp 拷貝到工程目錄
D:\My_VS2010\AngelScriptTest1中,並分別添加到項目的頭文件和源文件中。
7、 再次編譯:
fatal errorLNK1104: 無法打開文件“angelscriptd.lib”
點擊項目屬性à配置屬性à鏈接器à輸入à附加依賴項,輸入
"D:\My_VS2010\AngelScript\sdk\angelscript\lib\angelscriptd.lib",要有雙引號。
8、 再編譯:
error LNK2019: 無法解析的外部符號 __imp__timeGetTime@0,該符號在函數 "int __cdeclRunApplication(void)" (?RunApplication@@YAHXZ) 中被引用
說明還有一個用到的庫沒有加載進來。在main.cpp文件中添加該庫,如下:
#pragmacomment(lib,"winmm.lib")
9、 再次編譯,成功。運行程序:
已經成功運行起來了,但代碼中script.as 文件沒有打開,應該是程序沒有找到該文件,於是我們找到輸出該語句的地方:
FILE *f =fopen("script.as", "rb");
if( f == 0 )
{
cout << "Failed to openthe script file 'script.as'." << endl;
return -1;
}
它是在當前項目中打開文件,查看項目,沒有該文件,於是我們從:
D:\My_VS2010\AngelScript\sdk\samples\tutorial\bin
拷貝一個script.as 文件到 我們創建的工程目錄 D:\My_VS2010\AngelScriptTest1下
10、 再運行,成功輸出:
額外說明:
這裏配置項我們使用的是絕對路徑,在這種情況下,移動文件夾,就有可能導致項目運行不起來,如果使用相對路徑就可以避免這種情況:
如第5步:對頭文件目錄的配置
D:\My_VS2010\AngelScriptTest1
可以改爲:
$(ProjectDir), 表示工程的根目錄。
第7步對庫的依賴配置
"D:\My_VS2010\AngelScript\sdk\angelscript\lib\angelscriptd.lib",
可以改爲:
"$(ProjectDir)..\AngelScript\sdk\angelscript\lib\angelscriptd.lib"