如果不做修改,直接以C++方式编译原来以C语言方式编译的Lua库。导出函数会被修饰成C++风格的函数名,
比如:
?luaopen_luanetobject@@YAHPAUlua_State@@@Z
原来是luaopen_luanetobject。
下面这个函数可以直接解决这个问题。
function cpprequire(dllname) --dllname without '.dll'
local dll=dllname..'.dll'
local functionname='?luaopen_'..dllname..[[@@YAHPAUlua_State@@@Z]]
print('call:',functionname)
local ok,f=pcall(package.loadlib,dll,functionname)
print(ok,f)
if ok and f then
local ok=pcall(f)
if not ok then print('error.');end
else
print('error.')
end
end
--cpprequire'luanetobject'