Re: Wolfram LinkLibrary and additional dll on Windows

*To*: mathgroup at smc.vnet.net*Subject*: [mg121990] Re: Wolfram LinkLibrary and additional dll on Windows*From*: "Oleksandr Rasputinov" <oleksandr_rasputinov at hmamail.com>*Date*: Sat, 8 Oct 2011 05:33:24 -0400 (EDT)*Delivered-to*: l-mathgroup@mail-archive0.wolfram.com*References*: <j6melm$7dj$1@smc.vnet.net> <op.v2zvv9reqcgwdu@core2.lan>

On Fri, 07 Oct 2011 19:49:11 +0100, Oleksandr Rasputinov <oleksandr_rasputinov at hmamail.com> wrote: > > The issue may be that LoadLibrary("tbb.dll") fails due to not locating > tbb.dll on the search path--note that Windows's search path and > Mathematica's $LibraryPath are in general very different (for example, > on my system they contain nothing in common). If this is the case, then > as I see it you have at least three options: > > 1. set the Windows search path to $LibraryPath using SetDllDirectory() > before calling LoadLibrary() (here I assume that you would rather not > hard-code a fully qualified path due to possible difference between > installations); > 2. load the library using LoadLibrary(), but giving a fully qualified > path to the file as found by FindLibrary[]; > 3. use LoadLibrary["tbb.dll"] as part of your package initialization to > have Mathematica do this for you before you load your own library. > > Of these, option 3 seems preferable to me. Actually, I'm surprised that > LibraryFunctionLoad worked on tbb.dll considering that this will not > contain any WolframLibrary_initialize function or indeed adhere to the > Wolfram Library specification in any other respect. Sorry: in option 3, LoadLibrary["tbb.dll"] should (obviously?) be LibraryLoad["tbb.dll"]. I had mixed up the similarly named Windows function with the Mathematica one. In fact, LibraryLoad["tbb"] is probably better than LibraryLoad["tbb.dll"], as this should work on all platforms provided that the library can actually be found somewhere in $LibraryPath.