But does it work with the provided night build?
You are right, it does not work. I think this is a 64 Bit issue. I have to set up a 64 bit environment to debug this...
Probably int in squirrel is defined as int64 for 64 bit builds and wxWidgets checks the argument for the print function and gets int64 (long) but expects an int32 (int)?
[edit:]
OK, we use some custom patch and "long long".. Why not "int64_t"?
#if (defined(_WIN64) || defined(_LP64))
#ifndef _SQ64
#define _SQ64
#endif
#endif
#ifdef _SQ64
#ifdef _MSC_VER
typedef __int64 SQInteger;
typedef unsigned __int64 SQUnsignedInteger;
typedef unsigned __int64 SQHash; /*should be the same size of a pointer*/
// C::B patch: For Win64 build with GCC
#elif defined(__GNUC__) && defined(_WIN64)
typedef long long SQInteger;
typedef unsigned long long SQUnsignedInteger;
typedef unsigned long long SQHash; /* should be the same size of a pointer */
// C::B patch: All other 64-bit platforms
#else
typedef long SQInteger;
typedef unsigned long SQUnsignedInteger;
typedef unsigned long SQHash; /*should be the same size of a pointer*/
#endif
typedef int SQInt32;
#else
and
SQInteger wxString_OpAdd(HSQUIRRELVM v)
{
StackHandler sa(v);
wxString result;
wxString& str1 = *SqPlus::GetInstance<wxString,false>(v, 1);
if (sa.GetType(2) == OT_INTEGER)
{
#ifdef _SQ64
result.Printf(_T("%s%ld"), str1.c_str(), sa.GetInt(2));
#else
result.Printf(_T("%s%d"), str1.c_str(), sa.GetInt(2));
#endif
}
So here the format specifier is wrong. It should be "long long" aka "%lld" or better "PRId64" from <inttypes.h>?