lua庫 調用

一、製作我們的Lua庫(lua.lib)

第一步:準備好lua的源文件(目前我用的是最新版本lua-5.2.3,下載地址:http://www.lua.org/download.html);

第二步:把lua-5.2.3源文件隨便放一個盤的目錄下(好處是路徑少,目前我是喜歡放到D盤,比如:D:\lua-5.2.3);

第三步:運行vs2013,新建一個win32控制檯應用程序項目項目名稱:Lualib。如圖:


第四步:按確定之後,再點擊下一步後,進入“應用程序設置”界面,在應用程序類型:選擇“靜態庫”,附加選項:去掉預編譯頭。然後點擊完成。如圖

第五步:在Lualib工程的頭文件和源文件分別附加上lua-5.2.3的(.h文件)和(.c文件)

        ①:鼠標右擊Lualib工程目錄下的頭文件----->添加------>現有項   把:D:\lua-5.2.3\src中所有.h頭文件添加進來

                ②:鼠標右擊Lualib工程目錄下的源文件----->添加------>現有項   把:D:\lua-5.2.3\src中所有.c源文件添加進來

第六步:接下來是比較重要的,配置項目屬性。  打開菜單欄上的“項目”------->“屬性”-------->“配置屬性”

        ①:C/C++選項下,選中常規,第一項“附加包含目錄”中填上D:\lua-5.2.3\src。如圖:

                     

        ②:C/C++選項下,選中高級第二項“編譯爲”選擇:編譯爲C代碼(/TC。點擊確定。如圖:



第七步:上面完成之後。直接運行項目,生成我們需要的lua.lib文件。不過我這裏直接運行會出現以下的錯誤,如圖:


              

     不過不用擔心,已經有辦法修復。還是在配置屬性上面設置。        

              打開菜單欄上的“項目”------->“屬性”-------->“配置屬性”。C/C++選項下,選中預處理器 ,在第一選項的“預處理器定義”中加入_CRT_SECURE_NO_WARNINGS 即可。

    

 第八步:再次運行項目,你會發現彈出“無法啓動程序”的警告。這個不用管,我們看“輸出框”最後一句話就好。因爲我們是弄靜態庫的,當然是不能啓動程序啦。

               

完成這一步,我們的lua庫終於做好了。不信,你在D:\vsProject\Lualib\Debug下是不是有個Lualib.lib文件啊。這就是我們要的庫。接下來拿個簡單例子測試一下。


二、測試C++調用Lua

第一步:跟上面一樣,新建一個win32控制檯應用程序項目,項目名稱爲:mytest。然後點擊完成即可。

第二步:鼠標右擊解決方案,添加現有項目記住是現有項目,而不是現有項,不然後面會出差錯的哦),找到上面創建的Lualib文件夾下的Lualib.vcxproj文件,點擊確定添加。

如圖:


第三步:鼠標右擊mytest項目,選擇“屬性”,然後選中“通用屬性”下的“引用”添加Lualib的引用。如圖:




第四步:在“配置屬性” 的在“C/C++項”中選着“常規”,在第一項附加包含目錄”中填上D:\lua-5.2.3\src。如圖



第五步:上面完成之後,不多說,直接上代碼。在mytest.cpp文件上添加如下代碼:

[cpp] view plain copy
  1. // mytest.cpp : 定義控制檯應用程序的入口點。  
  2. //  
  3.   
  4. #include "stdafx.h"  
  5. #include <iostream>  
  6. #include <stdlib.h>  
  7. #include <stdio.h>  
  8. #include <string.h>  
  9.   
  10. extern "C"  
  11. {  
  12. #include "lua.h"  
  13. #include "lualib.h"  
  14. #include "lauxlib.h"  
  15. };  
  16.   
  17. using namespace std;  
  18.   
  19. int _tmain(int argc, _TCHAR* argv[])  
  20. {  
  21.     //打開Lua  
  22.     lua_State *L = luaL_newstate();  
  23.       /*加載lua所有庫*/  
  24.     luaL_openlibs(L);  
  25.     //luaopen_base(L);    
  26.     //luaopen_io(L);                //替換老版本的lua_iolibopen(L);    
  27.     //luaopen_string(L);            //替換老版本的lua_strlibopen(L);    
  28.     //luaopen_math(L);              //替換老版本的lua_mathlibopen(L);    
  29.     //luaopen_debug(L);             //替換老版本的lua_dblibopen(L);    
  30.        /*加載test.lua文件並運行*/  
  31.     luaL_dofile(L, "test.lua");  
  32.       /*清除lua*/  
  33.     lua_close(L);  
  34.     getchar();  
  35.   
  36.     return 0;  
  37. }  
跟mytest.cpp同目錄下的lua文件,名爲test.lua,其代碼如下:

[plain] view plain copy
  1. print("hello world")  

第六步:不多說,直接運行看結果。


三、在網上下載別人的代碼運行的例子

第一步:直接運行例子,看看能不能正常運行或者有什麼出錯的。剛下的文件,一運行立馬報錯。見圖:


看看什麼意思呢?原來是沒有包含lua幾個的頭文件,因爲我下的例子剛好沒有。沒事,沒有頭文件,我們就加頭文件,跟上面的測試例子有的相似。

在“配置屬性” 的在“C/C++項”中選着“常規”,在第一項附加包含目錄”中填上D:\lua-5.2.3\src。如圖


第二步:完成上面之後,再運行看看。還是出錯,錯誤代碼如下:

[plain] view plain copy
  1. 錯誤 1 error LNK1104: 無法打開文件“C:\Users\wy\Desktop\LuaLearning4\Debug\..\..\lib\lua5.1.lib  C:\Users\wy\Desktop\LuaLearning4\LuaLearning4\LINK LuaLearning4  


看到這個,大家應該知道是沒有找到庫的原因吧。那好,我們就加上我們上面製作的庫吧。還記得怎麼附加進去嗎?

①:鼠標右擊解決方案,添加現有項目找到上面創建的Lualib文件夾下的Lualib.vcxproj文件,點擊確定添加。


②:鼠標右擊項目,選擇“屬性”,然後選中“通用屬性”下的“引用”添加Lualib的引用。如圖:


第三步:好,我們再運行看看。什麼,還是同樣的問題?我猜估計是路徑問題了。呵呵,找找看。這路徑剛好對應我們的鏈接器。好了,上圖:


原來問題出在這裏,這個應該是原來的例子就設置好鏈接庫的。不過我現在用的是新的版本lua-5.2.3。就用我們之前的做的庫吧。

說到這裏,有兩種辦法解決這個問題。

第一種解決方法:直接把“附加依賴項”的內容全刪除了。估計有人會問到爲什麼?  那我誠心誠意的回答你,我們不是附加了一個庫了嗎?把它刪了,不就可以鏈接到我們的庫了嗎?

第二種解決方法:直接把“附加依賴項”的內容全刪除了,不過把我們的庫及其路徑放上去。如:D:\vsProject\Lualib\Debug\Lualib.lib即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章