原文4 R" a% R C8 W) \9 h
http://www.dreamloader.net/?action-viewthread-tid-225 q3 y3 Z2 o3 I. o, H" g2 T
+ ~2 L1 t7 ~4 _) N" ~ O0 X
如果你想直接在lua中调用你制作的DLL 下列是一个最简洁的方法 即使用lua的require函数( l" l: a7 H/ W$ A# T
" P* Z1 d; j* n1.在c++中创建一个DLL- d. g5 K6 g% t& P; Q$ C
CODE:
7 }8 C3 Z8 @! Y: ^; c% Y3 [1 k$ V+ @2 w9 g f4 u0 g
; X7 E8 Y% F' X
//lua_net.cpp
2 }0 G. _) E0 [, a$ L
# R1 V% D3 l% G3 s" X, p* N#include <windows.h> . r' m& I1 r9 ^, ~3 V4 j7 c
#include "..\lua\include\lua.hpp" . {- F" {- C# X9 Z4 z
( A& Y! n8 K# s; x1 I
//open
8 M! W8 S6 R; w. K& n9 fstatic int net_Open(lua_State* L)
2 p$ p7 E0 l ?# J; q+ {/ E6 v{ " P# R$ X6 R! \3 E9 p3 b
lua_pushstring(L,"net open");
. s1 G2 {4 x, r- a' S+ ]3 V' s return 1;
2 h) Y0 h6 B- i& L' E) N2 ~. p} 9 b$ {3 q# ]2 E5 O
7 o. ^& P, D; }//close
4 p3 d3 Q! h9 d9 U2 ]1 }static int net_Close(lua_State* L)
5 m$ x! N. {; O{ $ i% S0 ]; d4 f% ?7 W0 j
lua_pushstring(L,"net close"); , ^/ X* Y0 q/ P6 w% l
return 1;
, e& q' ^. z p! o/ ]& p+ s. E& [}
6 x% F* O7 u% g
* C8 h: q: y6 q" }' H6 s, }* K9 t9 M7 Q: z6 v% I- ~
1 ^6 C. u0 a' E) y+ \! T9 o
' S; q9 f2 S: B; V* v+ y8 w% textern "C"{
6 p# ^1 y1 ^2 v. i- s: C& Z' s: h% ] ]7 i% g/ ~5 w
__declspec(dllexport)
E/ n2 z* ]1 W1 m5 z7 e0 {0 S5 G" ?$ r
int luaopen_lua_net(lua_State *L)
2 L4 P) e* w7 [. |* O }" ~{
9 P$ x4 c- }1 X4 ? luaL_register(L, "netClose", net_Close); 5 @% \" I8 z! u4 w& f
luaL_register(L, "netopen", net_Open); Z* @/ P' F+ X1 B8 c9 E8 Z
return 1; / W5 ^' X, w7 L( J/ e
}
( v: h2 m+ c7 n9 w; j3 @* Y: u
6 D5 B* w! O+ W% }}
6 b/ e1 X0 Y" }$ S- t7 K4 d- J2.把编译的dll 这里名为lua_net.dll 放到和main.exe同目录中或者自己另设目录 然后在lua中输入# T A3 q, |$ N3 O# H; b2 O E3 K% @
CODE:/ a/ H1 t+ L) D5 y0 J, d2 t! T# d
) {6 |2 \/ {7 Q( m; u
' Z/ d6 e: t7 Xrequire 'lua_net' 8 P! H6 K* |0 `( c7 a+ {* ^3 B
print(net.open()) --显示netopen
* d3 g& X0 f' ^print(net.close())--显示netclose
$ U: _- j* l X, Z; n2 f" }% r1 H编译的前提是你下载有lua5 的源代码 可以到这里下载 http://www.lua.org/download.html
2 l- x9 V- r3 e b) ?7 c$ E
/ x2 k: b- S8 f) o( s) ?5 Y7 L/ L注:这是一种比较直接的方法 前提是需要你会使用c++ 适合高级用户使用 另外 我们也在尝试写一些通用函数
8 \: v; d3 t+ ~让用户直接在lua中调用DLL 而不需要有c++知识 例如在lua中直接输入:
( O* c: G' M" U: S3 G1 q& Q' JCODE:' u1 i9 R1 T7 \, G) a; ]
, c4 M5 l* h- G6 Z
3 u$ l' V/ R- u1 Q
--读取dll( |( k7 d6 P" |$ K
function1=loaddll("test.dll")# @/ Y/ T) R; a7 a" m
4 V0 N! p k4 d2 p- `- S
--执行得到的函数
" s2 J- H1 |3 jfunction1(参数1,参数2....) |