On Fri, Jan 3, 2020, at 3:30 AM, Christoph M. Becker wrote: > On 02.01.2020 at 22:38, Larry Garfield wrote: > > > This is a long shot, but I figured I'd try here before PHP-Internals. > > > > I'm experimenting with PHP-FFI. 2 weeks ago, I had working code. The same code 2 weeks later is now not working. (I say "Same code" because I can confirm that via Git. It's not just me saying I didn't touch it.) > > > > The code in question is here: > > > > https://github.com/Crell/ffi-test/tree/master/points > > > > Running `make inline` (to test loading up the FFI logic inline) works. > > > > Running `make preload` (to load the library in a preload routine) fails. > > > > Specifically, the preloader.php script is called, and gives this error: > > > > PHP Warning: failed pre-loading '/home/crell/temp/php-ffi-test/points/points.h', cannot resolve C function 'distance' in preloader.php on line 6 > > > > Line 6 is: > > > > FFI::load(__DIR__ . "/points.h"); > > > > I do not understand how this worked before, but doesn't now. A friend suggested some library version or path changed, but I've no idea what. > > > > The "dummy" example (in a separate folder) works fine. It's straight out of the PHP manual. The main difference is it's linking against stdlib, whereas `points` has a tiny custom library. That's being problematic. > > > > Anyone have a recommendation here? I'm out of ideas. > > Would it work if you used an absolute path in points.h? If so, I think > `LD_LIBRARY_PATH` would need adjustment. > > -- > Christoph M. Becker Nope. I tried changing the header file to: #define FFI_LIB "/home/crell/temp/php-ffi-test/points/points.so" And it still failed with the same error. --Larry Garfield