lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


Hello everyone.

This is to point out some problems I found with Lua binaries on
Windows XP x64. I'm new to this mailing list and, actually, I'm not a
Lua user. But I had to fix this problem because otherwise I couldn't
run the wonderful Electric Sheep (electricsheep.org) on this machine.
;)

Anyway. I've found that 32-bit binaries from both
http://luabinaries.luaforge.net/download.html and Lua for Windows do
not work on XP 64-bit (with errors like the XP ones in
http://blogs.msdn.com/junfeng/archive/2006/04/14/576314.aspx ), while
64-bit binaries from http://luabinaries.luaforge.net/download.html
work correctly. This shouldn't happen since XP64 has complete
retro-compatibility with 32-bit apps (the only limitation is that you
can't mix 32-bits libraries on a 64-bit processes and vice versa).

This problem arises from the manifest of the executables set in
lua_dllx.manifest:

--- snip ---
        <assemblyIdentity
            type="win32"
            name="Microsoft.VC80.CRT"
            version="8.0.50727.762"
            processorArchitecture="*"
            publicKeyToken="1fc8b3b9a1e18e3b"
        />
--- snip ---

Leaving processorArchitecture set to "*" works for 64-bits executables
and Windows (or, better, Side-by-Side) will load the correct VC CRT
libraries. On 32-bit executables instead, SxS will just fail in
loading the libraries saying that they can't be found even if their
32-bit version is correctly installed. Setting
processorArchitecture="x86" will solve this problem for 32-bit
executables that will run smoothly on XP64. That can be left set to
"*" (or to "Amd64") for 64-bit ones.

The compiler (I guess) also adds a Windows Common Controls dependency
with processorArchitecture="*", but that works regardless of
executable type (don't ask me why).

However, you may want to do additional tests on Vista 64, just to
check how the "*" works there.

Regards.
Danilo