actboy168 / bee.lua

Lua runtime and toolset
MIT License
158 stars 30 forks source link

time.time()得到负值 #25

Closed tonyzzp closed 2 years ago

tonyzzp commented 2 years ago

我用的是某个老版本的bee.lua 在vs里编译正常。 用luamake编译linux版本也正常 但是用luamake编译windows版本,time.time()会我返回负值 请问有可能是什么原因呢?

luciouskami commented 2 years ago

luamake也是调用的msbuild编译,在各项条件都相同的情况下,如果你使用visual studio编译,那么与使用luamake编译得到的结果应该是一致的。

actboy168 commented 2 years ago

@luciouskami luamake是直接用cl不经过msbuild

actboy168 commented 2 years ago

@tonyzzp 请用最新的版本。旧版本不会再维护了。

tonyzzp commented 2 years ago

因为一些原因,需要使用lua5.1

编译的时候有这2个警告,我怀疑就是这个问题。

3rd/bee.lua/binding/lua_time.cpp(36): warning C4244: “参数”: 从“uint64_t”转换到“lua_Integer”,可能丢失数据 3rd/bee.lua/binding/lua_time.cpp(40): warning C4244: “参数”: 从“uint64_t”转换到“lua_Integer”,可能丢失数据

tonyzzp commented 2 years ago

vcruntime.h里有这一段定义

ifdef _WIN64

typedef unsigned __int64 size_t;
typedef __int64          ptrdiff_t;
typedef __int64          intptr_t;

else

typedef unsigned int     size_t;
typedef int              ptrdiff_t;
typedef int              intptr_t;

endif

好像 lua_Integer 被定义为了int,也许不行? 我尝试添加_WIN64,但编译会有很多报错。

actboy168 commented 2 years ago

lua5.1的int只有32位,你需要一个int64的patch或者library。亦或者把GetTickCount64改成GetTickCount

tonyzzp commented 2 years ago

我知道怎么回事了。 arch改成 x86_64就好了 。原来写的是x64。