www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Does DUB create .dll files?

reply WhatMeWorry <kheaser gmail.com> writes:
I just incorporated DerelictALURE into a project and it compiled 
and linked fine, but when I ran the executable, it aborted with:

derelict.util.exception.SharedLibLoadException N:\DUB_Packages\DerelictOrg\DerelictUtil\source\derelict\util\exception.d(35):
Failed to load one or more sharedlibraries:
ALURE32.dll - The specified module could not be found.

So I went back to DerelictOrg\derelict-alure-master\lib and I see 
a DerelictALURE.lib file that was created, but nothing else.

Am I supposed to get ALURE32.DLL from somewhere outside of DUB, 
or did I miss a step or command when I built 
derelict-alure-master?

thanks.
May 16 2016
next sibling parent Rene Zwanenburg <renezwanenburg gmail.com> writes:
On Tuesday, 17 May 2016 at 05:30:33 UTC, WhatMeWorry wrote:
 Am I supposed to get ALURE32.DLL from somewhere outside of DUB, 
 or did I miss a step or command when I built 
 derelict-alure-master?

 thanks.
You'll need to get the dll somewhere else and set up DUB to copy it to your output directory. The derelict packages don't include prebuilt binaries for the libraries they're binding to. Here's how dlangui does it for example: https://github.com/buggins/dlangui/blob/master/dub.json#L60
May 17 2016
prev sibling parent Mike Parker <aldacron gmail.com> writes:
On Tuesday, 17 May 2016 at 05:30:33 UTC, WhatMeWorry wrote:
 I just incorporated DerelictALURE into a project and it 
 compiled and linked fine, but when I ran the executable, it 
 aborted with:

 derelict.util.exception.SharedLibLoadException N:\DUB_Packages\DerelictOrg\DerelictUtil\source\derelict\util\exception.d(35):
 Failed to load one or more sharedlibraries:
 ALURE32.dll - The specified module could not be found.

 So I went back to DerelictOrg\derelict-alure-master\lib and I 
 see a DerelictALURE.lib file that was created, but nothing else.

 Am I supposed to get ALURE32.DLL from somewhere outside of DUB, 
 or did I miss a step or command when I built 
 derelict-alure-master?

 thanks.
The Derelict packages all provide *bindings* to C libraries, not the shared libraries they bind to. You link statically with DerelictFoo.lib, which is what happens automatically when you use dub to manage your project and provide derelict-foo as a dependency, then load libfoo.dll/so/dylib dynamically at runtime with DerelictFoo.load. In order for this to work, the libfoo shared library must be somewhere on the system path. For Windows, you generally want to keep it in the same directory as your executable. It's up to you to obtain the C shared library, either through downloading a prebuilt binary or getting the C source and building it yourself In your specific case, ALURE is available at [1]. A precompiled Windows binary is provided for download at the bottom of that page. [1] http://kcat.strangesoft.net/alure.html
May 17 2016