[racket] Windows FFI Problem

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Fri Jan 16 12:19:38 EST 2015

Along the lines of these suggestions, you could try using an absolute
path to the DLL.

If an absolute path works, then it's probably an issue of the search
path for DLLs, and using `define-runtime-path` might be the best
approach.

If an absolute path doesn't work, then it might be a mismatch between
Racket and the DLL (32-bit versus 64-bit builds) or a missing DLL, as
others have suggested.

At Fri, 16 Jan 2015 11:01:31 -0500, Michael Wilber wrote:
> Does this work if you place the .DLL in the same directory as the Racket
> executable?
> 
> What if it's placed in your System32 folder?
> 
> If you need to put the library in a nonstandard path (I think putting
> the .dll in the same folder as the .rkt script is nonstandard), try
> registering the DLL. See
> http://stackoverflow.com/questions/4897685/how-do-i-register-a-dll-file-on-wind
> ows-7-64-bit
> 
> Lehi Toskin <lehi at tosk.in> writes:
> > On Thu, 15 Jan 2015 18:55:41 -0700, Matthew Flatt wrote:
> >
> >> At Thu, 15 Jan 2015 22:10:35 +0000 (UTC), Lehi Toskin wrote:
> >>> I am attempting to use this C library I've written with the Racket FFI,
> >>> but (ffi-lib "mylib") reports "The specified module could not be
> >>> found.;
> >>> errno=126". This only happens on Windows. On Linux the library gets
> >>> loaded properly and I can use it fine. What could be the problem?
> >>
> >> Can you say more about where "mylib.dll" is located in your Windows
> >> installation --- and maybe also where it's located on Linux, for
> >> comparison?
> >>
> >
> > I actually have the library in the same directory as the script for both
> > platforms. I've tried "mylib", "mylib.dll" and even permutations of "path/
> > to/lib/directory/mylib".
> > ____________________
> >   Racket Users list:
> >   http://lists.racket-lang.org/users
> ____________________
>   Racket Users list:
>   http://lists.racket-lang.org/users

Posted on the users mailing list.