[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: about lposix
 
- From: Nick Gammon <nick@...>
 
- Date: Wed, 18 Oct 2006 14:42:16 +1000
 
On 18/10/2006, at 11:21 AM, Mike Pall wrote:
To use the Cygwin-provided toolchain, you need -mno-cygwin *and*
the mingw target. You can do this without changing the Makefile:
  make "CC=gcc -mno-cygwin" mingw
Or just build Lua using plain MinGW with: make mingw
Sorry if this is getting a bit off-topic, but here goes ...
That works fine, and I get a dll that doesn't require cygwin1.dll.  
But ...
I amended luaconf.h to add this line:
#define LUA_USELONGLONG
Now, when compiled, and I try this:
print (string.format ("%i", 2^62))  --> should be:  
4611686018427387904, but is: 0
A quick test using this program has some interesting results:
-------------
#include <stdio.h>
int main (void)
  {
  long long x = 4611686018427387904LL;
  printf ("%lld", x);
  return 0;
  }
-------------
If I compile this like so:  gcc test.c -o test
And test it: ./test
I get this: 4611686018427387904
But, if I compile like this: gcc test.c -mno-cygwin -o test
And test it: ./test
I get this: 0
Internally Lua is using the %lld format to do a string.format (if you  
have LUA_USELONGLONG defined) so the problem with my test program is  
what is causing the problem with Lua.
How do I compile and link, without needing the cygwin1.dll library,  
but still getting the correct "long long" functionality?
- Nick