成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Lua調用C++函數實現教程

移動開發(fā) iOS
Lua調用C++函數實現教是本文要介紹的內容,主要是來學習Lua語言的調用,具體來看本文詳細介紹。

Lua調用C++函數實現教是本文要介紹的內容,主要是來學習Lua語言的調用,具體來看本文詳細介紹。

環(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),新建一個C++ project,File->New Project->Empty Project,在Name欄輸入工程名,然后OK.

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

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

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

5、設置Input:Input->Additional Dependencies->這里手動輸入"lua5.1.lib"就可以了。點擊確認。

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

Test Lua調用C++函數

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

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

  1. //依賴文件  
  2.  
  3. //因為建的是C++ Project,所以這里必須要加extern "C" ,如果不加這個是沒辦法編譯的。   
  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. //因為建的是C++ 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. //--------注冊函數-----------   
  19. struct luaL_reg lrLibs[] =     
  20. {    
  21.      { "hello", hello },    
  22.      { NULL, NULL }  /* sentinel */    
  23. };   
  24. // 該函數是庫的入口函數,需要在Lua中調用用來注冊庫函數列表    
  25. // 因為Lua是用C語言寫的,所以導出函數需要符合C語言調用規(guī)范    
  26. // 返回值:注冊的函數庫,其實為一個table    
  27. extern "C" int luaopen_hello( lua_State* L )    
  28. {    
  29.       //注冊名為hello的函數庫    
  30.      luaL_register( L, "hello", lrLibs );    
  31.      return 1;    
  32. }  

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

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

(2)這個文件很簡單,首先在文件最上面加上 EXPORTS,然后再將你在C++文件中定義的那個入口函數的函數名加進來就可以了。(就是上面的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,在控制臺可以看到Build的信息。

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

建Lua文件測試:

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

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

  1. require("hello");  

-- 在C++文件中注冊的名字

  1. local f = hello;  

-- 調用C++文件中定義的方法,"Lua"就是參數了。

  1. f.hello("Lua");  

2、保存,取個名字,我這是LuaVC.lua.

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

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

  1. Hi!Lua  

小結:Lua調用C++函數實現教程的內容介紹完了,希望通過本文的學習能對你有所幫助!

責任編輯:zhaolei 來源: iteye
相關推薦

2011-08-25 16:47:53

LuaC++ 證書

2011-08-22 17:13:00

LuaC++函數

2010-01-28 13:35:41

調用C++函數

2013-12-13 16:53:00

Lua腳本語言C++

2010-01-21 11:23:58

C++函數調用

2023-11-09 23:31:02

C++函數調用

2011-08-23 16:59:16

C++LUA腳本LUA API

2010-01-20 14:25:56

函數調用

2011-08-23 09:50:29

LuaPlusLua 腳本

2010-02-03 15:52:55

C++ clock()

2010-02-05 15:59:26

C++函數重載

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++函數語言

2020-08-21 13:20:36

C++If ElseLinux

2010-02-04 17:16:33

C++調用python

2022-01-14 09:10:56

C++文件Linux

2010-01-27 17:16:52

C++構造函數

2010-01-20 14:35:55

C++調用
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲一区在线日韩在线深爱 | 久久99精品久久久久久 | 成人在线精品视频 | 成人高清在线视频 | 超碰伊人久久 | av片免费| 伦理二区| 久久亚洲精品国产精品紫薇 | 久久99精品久久久久子伦 | 国产成人精品区一区二区不卡 | 国产第一区二区 | 国产欧美一区二区三区免费 | 阿v视频在线观看 | 日韩一区二区三区在线播放 | 成人不卡| 亚洲一一在线 | 久久久女女女女999久久 | 日韩在线中文字幕 | 永久av | 国产一区二区欧美 | 亚洲小视频在线观看 | 男女激情网 | 精品国产乱码久久久久久丨区2区 | 久久久久久久国产精品影院 | 91久久久久久久久 | 天天躁日日躁狠狠很躁 | 国产一区二 | 亚洲精品一二区 | 色婷婷精品久久二区二区蜜臂av | 九九热这里只有精品在线观看 | 国产精品久久久久久久免费观看 | 日日摸日日爽 | 久草热8精品视频在线观看 午夜伦4480yy私人影院 | 国产乱码精品一区二区三区五月婷 | 成人精品视频在线观看 | 黄色大片观看 | 日日夜夜精品 | 欧美黄色录像 | www.4虎影院| 一区二区三区在线 | 69热视频在线观看 |