闲来无事。这些天研究luajit ffi库,发现这个库很强大 ,直接可以用lua写c代码了,肯定还是有一些局限性的。
function Beep()--主板报警
local ffi = require("ffi")
ffi.cdef[[
bool __stdcall Beep(long dwFreq, long dwDuration);
]]
ffi.C.Beep(500,200)ffi.C.Beep(1200,500)ffi.C.Beep(3200,500)
ffi.C.Beep(500,100)ffi.C.Beep(1200,300)ffi.C.Beep(3200,500)
end
function TestCreateThread()
local ffi = require("ffi");
local C = ffi.C;
ffi.cdef[[
typedef long (__stdcall *PTHREAD_START_ROUTINE)( long lpThreadParameter);
typedef PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE;
long __stdcall CreateThread(long lpThreadAttributes,int dwStackSize,PTHREAD_START_ROUTINE lpStartAddress,long lpParameter,long dwCreationFlags,long lpThreadId);
int __stdcall Sleep(int num);
]]
--local lpParameter = ffi.typeof("void*");
---local lpParameter = ffi.new(lpParameter,1);
local dwCreationFlags ,lpThreadId =0,0;
--[[C 语言原型的线程
::CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)(&Login_Thread), NULL, 0, NULL);
]]
C.CreateThread(
0,
0,
function(param)
Beep(true);
print("11111111");
end,--回调函数 线程要调用的执行的
0,
0,
0
)
print('TestCreateThread',type(C.CreateThread))
end
这个用luajit 的 解释器执行起来 是没问题 主板也能发声,说明线程能正常创建 并且打印出来了
print('TestCreateThread',type(C.CreateThread))
问题来了,我把在主程序里面执行脚本的时候 运行这些代码 但是不会创建线程 反正没主板发声,打印好像有,具体忘了,打印应该 是出来了,就是没 主板发声。很奇怪。