|
于 2013-11-8 15:01, Paul K 写道:
Thank you Peng and Liam. One more question about proxy DLLs. I'm looking at proxy DLL 4 by Paul Moore [1] that allows proxying calls for lua51.dll to statically linked interpreter (it will probably work with lua52.dll, but I haven't tested that yet). Unfortunately, it's using VS compiler and I have everything else compiled using mingw. It includes this comment "The MSVC compiler (as __declspec(naked) is only supported by MSVC). I am working on finding an equivalent in Mingw, so that an all-Mingw approach is possible." I did find an alternative to __declspec(naked) in mingw ([2]), but don't understand some of the elements involved to update the current script to work using this method. Do I need to try to come up with mingw alternative or maybe mixing VS and gcc-compiled libraries is not an issue in this case as the proxy DLL doesn't do any memory allocation or anything else that may be potentially harmful [3]? According to my experiences, mingw recognize library file produced by MSVC just fine, as long you do it right. The key is to get the proper IMPORT library for mingw to use. To do this, you need 'dlltool', included in the mingw distribution. For detailed guidelines, see [1]. Also, since all the DLLs does is call forwarding, are there any issues I may run into if I combine exports from Lua51.dll and Lua52.dll and create one proxy DLL that works for both versions (as a s uperset of all the calls that need to be forwarded)? Well, I've no idea about what your configuration is. But I guess you'd better not do it. Proxy dll is used when you statically linked liblua into your application's exe file, but you want to load pre-built third party C modules, which are linked against a dll file. Since a C module is built just for one specific version of Lua, you don't need a dll that forwards both 5.1 and 5.2 of Lua. Just build two dlls, one for each version. Besides, Lua 5.1 and 5.2 contains incompatible APIs, I don't take it as a good idea to make a "superset" of both version. ------------------------------------------------------------------------------------------------------------------- [1] http://www.mingw.org/wiki/CreateImportLibraries |