digitalmars.D.learn - Windows 64-bit import library
- Jordan Wilson (22/22) Jul 19 2018 I'm trying to create an import library from a dll (in this case,
- Mike Parker (3/6) Jul 19 2018 Lua is extremely easy to build. That will generate the import lib
- Jordan Wilson (7/15) Jul 19 2018 I don't have MSVC, so I built it using mingw, which generated a
- Mike Parker (11/18) Jul 19 2018 In that case, you may be better off using the DerelictLua binding
- Jordan Wilson (8/26) Jul 22 2018 Ah I think you have indirectly reminded me what the problem could
- evilrat (4/23) Jul 20 2018 what about passing your .def file directly with /DEF:your.def
- Jordan Wilson (13/38) Jul 22 2018 Thanks, I tried your suggestion, but received:
I'm trying to create an import library from a dll (in this case, a Lua dll). Using dumpbin, I end up with a .def file: EXPORTS luaL_addlstring luaL_addstring luaL_addvalue luaL_argerror luaL_buffinit ... I then use MS lib tool to generate a lib file: lib /def:lua53.def /out:lua53.lib /machine:x64 I'm able to link the lib without errors (i.e. no "not valid lib" errors or anything), but that's as far as I get...any attempt to call functions results in: undefined symbol: luaL_newstate etc. Is there any way I can generate the appropriate lib? Else I think I'll need to get hold of the proper import libs that come with the Lua distribution. Thanks, Jordan
Jul 19 2018
On Thursday, 19 July 2018 at 21:43:35 UTC, Jordan Wilson wrote:Is there any way I can generate the appropriate lib? Else I think I'll need to get hold of the proper import libs that come with the Lua distribution.Lua is extremely easy to build. That will generate the import lib for you.
Jul 19 2018
On Friday, 20 July 2018 at 01:34:39 UTC, Mike Parker wrote:On Thursday, 19 July 2018 at 21:43:35 UTC, Jordan Wilson wrote:I don't have MSVC, so I built it using mingw, which generated a .a lib. I shall google some more, as I understand it DMD -m64 uses Mingw libs as a fall back when MSVC not found, I compiled Lua using mingw, I can't be too much further away from being able to link in a 64-bit lua import lib in a 64-bit DMD compiled program...Is there any way I can generate the appropriate lib? Else I think I'll need to get hold of the proper import libs that come with the Lua distribution.Lua is extremely easy to build. That will generate the import lib for you.
Jul 19 2018
On Friday, 20 July 2018 at 04:31:38 UTC, Jordan Wilson wrote:I don't have MSVC, so I built it using mingw, which generated a .a lib. I shall google some more, as I understand it DMD -m64 uses Mingw libs as a fall back when MSVC not found, I compiled Lua using mingw, I can't be too much further away from being able to link in a 64-bit lua import lib in a 64-bit DMD compiled program...In that case, you may be better off using the DerelictLua binding [1] so that you can avoid the link-time dependency and just load the Lua DLL manually at runtime via `DerelictLua.load` [2]. Then it doesn't matter which compiler the DLL was compiled with or which toolchain you use to compile your app. Version 2.0.0-beta.2 (master and 2.0 branches) binds to Lua 5.3 (don't let the beta tag scare you -- it's stable). If you need Lua 5.2 instead, version 1.3.0 binds to it. [1] https://code.dlang.org/packages/derelict-lua [2] https://github.com/DerelictOrg/DerelictLua
Jul 19 2018
On Friday, 20 July 2018 at 05:12:05 UTC, Mike Parker wrote:On Friday, 20 July 2018 at 04:31:38 UTC, Jordan Wilson wrote:Ah I think you have indirectly reminded me what the problem could be, the luaD wrapper that's available is for 5.1 I think (I'm trying to link lua 5.3). Your binding did work quite well, but I think I'll try again using lua 5.1, so I can keep using luaD. Thanks, JordanI don't have MSVC, so I built it using mingw, which generated a .a lib. I shall google some more, as I understand it DMD -m64 uses Mingw libs as a fall back when MSVC not found, I compiled Lua using mingw, I can't be too much further away from being able to link in a 64-bit lua import lib in a 64-bit DMD compiled program...In that case, you may be better off using the DerelictLua binding [1] so that you can avoid the link-time dependency and just load the Lua DLL manually at runtime via `DerelictLua.load` [2]. Then it doesn't matter which compiler the DLL was compiled with or which toolchain you use to compile your app. Version 2.0.0-beta.2 (master and 2.0 branches) binds to Lua 5.3 (don't let the beta tag scare you -- it's stable). If you need Lua 5.2 instead, version 1.3.0 binds to it. [1] https://code.dlang.org/packages/derelict-lua [2] https://github.com/DerelictOrg/DerelictLua
Jul 22 2018
On Friday, 20 July 2018 at 04:31:38 UTC, Jordan Wilson wrote:On Friday, 20 July 2018 at 01:34:39 UTC, Mike Parker wrote:what about passing your .def file directly with /DEF:your.def linker switch? more info https://msdn.microsoft.com/en-us/library/34c30xs1.aspxOn Thursday, 19 July 2018 at 21:43:35 UTC, Jordan Wilson wrote:I don't have MSVC, so I built it using mingw, which generated a .a lib. I shall google some more, as I understand it DMD -m64 uses Mingw libs as a fall back when MSVC not found, I compiled Lua using mingw, I can't be too much further away from being able to link in a 64-bit lua import lib in a 64-bit DMD compiled program...Is there any way I can generate the appropriate lib? Else I think I'll need to get hold of the proper import libs that come with the Lua distribution.Lua is extremely easy to build. That will generate the import lib for you.
Jul 20 2018
On Friday, 20 July 2018 at 12:03:20 UTC, evilrat wrote:On Friday, 20 July 2018 at 04:31:38 UTC, Jordan Wilson wrote:Thanks, I tried your suggestion, but received: lld-link: warning: <root>: undefined symbol: luaL_newstate lld-link: warning: <root>: undefined symbol: luaL_addlstring lld-link: warning: <root>: undefined symbol: luaL_addstring lld-link: warning: <root>: undefined symbol: luaL_addvalue lld-link: warning: <root>: undefined symbol: luaL_argerror lld-link: warning: <root>: undefined symbol: luaL_buffinit etc. I think I'll just have to obtain the lib from the LuaBinaries distribution. Thanks, JordanOn Friday, 20 July 2018 at 01:34:39 UTC, Mike Parker wrote:what about passing your .def file directly with /DEF:your.def linker switch? more info https://msdn.microsoft.com/en-us/library/34c30xs1.aspxOn Thursday, 19 July 2018 at 21:43:35 UTC, Jordan Wilson wrote:I don't have MSVC, so I built it using mingw, which generated a .a lib. I shall google some more, as I understand it DMD -m64 uses Mingw libs as a fall back when MSVC not found, I compiled Lua using mingw, I can't be too much further away from being able to link in a 64-bit lua import lib in a 64-bit DMD compiled program...Is there any way I can generate the appropriate lib? Else I think I'll need to get hold of the proper import libs that come with the Lua distribution.Lua is extremely easy to build. That will generate the import lib for you.
Jul 22 2018