自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Lua調(diào)用C++函數(shù)實(shí)現(xiàn)教程

移動(dòng)開發(fā) iOS
Lua調(diào)用C++函數(shù)實(shí)現(xiàn)教是本文要介紹的內(nèi)容,主要是來學(xué)習(xí)Lua語言的調(diào)用,具體來看本文詳細(xì)介紹。

Lua調(diào)用C++函數(shù)實(shí)現(xiàn)教是本文要介紹的內(nèi)容,主要是來學(xué)習(xí)Lua語言的調(diào)用,具體來看本文詳細(xì)介紹。

環(huán)境:Visual C++ 2008 Express Edition + Lua 1.5 + SciTE(lua編輯器)

下載 Visual C++ 2008 Express Edition + Lua ,下載后安裝,省略N字。

環(huán)境配置:

1、打開Visual C++ 2008(后面簡稱VC2008),新建一個(gè)C++ project,F(xiàn)ile->New Project->Empty Project,在Name欄輸入工程名,然后OK.

2、設(shè)置生成DLL文件,右鍵工程名,Properties->Configuration Properties->General->Configuration Type->選擇Dynamic Library(.dll)

3、設(shè)置C/C++、Lua。C/C++->General->Additional Include Directories->選擇Lua的安裝路徑下的include,我Lua安裝在"C:\Program Files\Lua",我的完整路徑:"C:\Program Files\Lua\5.1\include"。

4、設(shè)置Linker:Linker->General->Additional Library Directories->選擇Lua安裝目錄下的lib目錄就可以了。我的完整路徑:"C:\Program Files\Lua\5.1\lib".

5、設(shè)置Input:Input->Additional Dependencies->這里手動(dòng)輸入"lua5.1.lib"就可以了。點(diǎn)擊確認(rèn)。

OK,暫時(shí)配置就到這里,下面還需要配置一個(gè)模塊定義文件。等等再說。

Test Lua調(diào)用C++函數(shù)

1、選擇Source Files,右鍵Add->New Item->選擇 C++ File(.cpp)->Add->Name欄輸入hello->Add。

2、在hello.cpp文件中輸入下面Code.

  1. //依賴文件  
  2.  
  3. //因?yàn)榻ǖ氖荂++ Project,所以這里必須要加extern "C" ,如果不加這個(gè)是沒辦法編譯的。   
  4.  
  5. extern "C" {   
  6. #include "lua.h"   
  7. #include "lualib.h"   
  8. #include "lauxlib.h"   
  9. }   
  10. #include <windows.h>   
  11. #include <wincrypt.h>   
  12. //因?yàn)榻ǖ氖荂++ Project,所以這里必須要加extern "C"   
  13. extern "C" int hello(lua_State* L){   
  14. printf("------>>  Hi! %s \n",(LPTSTR)lua_tostring(L,1));   
  15. return 0;   
  16. }   
  17.  
  18. //--------注冊(cè)函數(shù)-----------   
  19. struct luaL_reg lrLibs[] =     
  20. {    
  21.      { "hello", hello },    
  22.      { NULL, NULL }  /* sentinel */    
  23. };   
  24. // 該函數(shù)是庫的入口函數(shù),需要在Lua中調(diào)用用來注冊(cè)庫函數(shù)列表    
  25. // 因?yàn)長ua是用C語言寫的,所以導(dǎo)出函數(shù)需要符合C語言調(diào)用規(guī)范    
  26. // 返回值:注冊(cè)的函數(shù)庫,其實(shí)為一個(gè)table    
  27. extern "C" int luaopen_hello( lua_State* L )    
  28. {    
  29.       //注冊(cè)名為hello的函數(shù)庫    
  30.      luaL_register( L, "hello", lrLibs );    
  31.      return 1;    
  32. }  

3、建一個(gè)模塊定義文件,在環(huán)境配置中說到過,這里先不介紹怎么配置。

(1)這個(gè)時(shí)候要在當(dāng)前Project下面建立文件,文件后綴為.def的文件。我這里定義的是叫“lua_c.def”的文件。

(2)這個(gè)文件很簡單,首先在文件最上面加上 EXPORTS,然后再將你在C++文件中定義的那個(gè)入口函數(shù)的函數(shù)名加進(jìn)來就可以了。(就是上面的luaopen_hello)。

(3)將模塊定義文件加入到Project,右鍵Resource Files->add->Add Existing Item->選擇新建的lua_c.def文件,Add.

4、將模塊定義文件配置到Project中,上面環(huán)境配置沒有說完的,Properties->Configuration Properties->Linker->Input->Module Definition File->輸入上面建的lua_c.def文件,確定。

OK!到這里就基本上配置好了。

編譯Project:

1、右鍵Project->Build,在控制臺(tái)可以看到Build的信息。

2、在當(dāng)前Project\Debug\,就可以找到與工程名相同的 hello.dll(我這里Project Name是hello)文件了,這個(gè)文件就可以在Lua中使用了。

建Lua文件測(cè)試:

1、打開SciTE編輯器,新建一個(gè)文件,在文件中輸入下面的內(nèi)容:

-- "hello"是模塊的名字,與Project Name相同

  1. require("hello");  

-- 在C++文件中注冊(cè)的名字

  1. local f = hello;  

-- 調(diào)用C++文件中定義的方法,"Lua"就是參數(shù)了。

  1. f.hello("Lua");  

2、保存,取個(gè)名字,我這是LuaVC.lua.

3、運(yùn)行??旖萱I F5.這里需要注意下,需要把hello.dll文件拷到Lua能找到的路徑下,我這里放在了與Lua文件一起。

如果都沒有問題的話就可以看到SciTE控制臺(tái)輸出

  1. Hi!Lua  

小結(jié):Lua調(diào)用C++函數(shù)實(shí)現(xiàn)教程的內(nèi)容介紹完了,希望通過本文的學(xué)習(xí)能對(duì)你有所幫助!

責(zé)任編輯:zhaolei 來源: iteye
相關(guān)推薦

2011-08-25 16:47:53

LuaC++ 證書

2011-08-22 17:13:00

LuaC++函數(shù)

2013-12-13 16:53:00

Lua腳本語言C++

2010-01-28 13:35:41

調(diào)用C++函數(shù)

2010-01-21 11:23:58

C++函數(shù)調(diào)用

2011-08-23 16:59:16

C++LUA腳本LUA API

2011-08-23 09:50:29

LuaPlusLua 腳本

2023-11-09 23:31:02

C++函數(shù)調(diào)用

2010-01-20 14:25:56

函數(shù)調(diào)用

2010-02-05 15:59:26

C++函數(shù)重載

2010-02-03 15:52:55

C++ clock()

2011-08-29 16:48:50

Lua配置文件C++

2011-07-20 16:09:08

C++

2010-02-01 13:26:58

C++讀取CSV文件

2023-12-24 12:56:14

C++函數(shù)語言

2020-08-21 13:20:36

C++If ElseLinux

2010-02-04 17:16:33

C++調(diào)用python

2011-08-23 17:11:13

Lua事件C#

2022-01-14 09:10:56

C++文件Linux

2010-01-27 17:16:52

C++構(gòu)造函數(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)