When are lime.ndll and lime-legacy.ndll needed?

I created a small HelloWorld application and built it for cpp and neko, in each case the bin folder contained the above two libraries which are both quite large. Out of curiosity I deleted the libraries and my HelloWorld still ran.

So my question is what’s in lime.ndll and lime-legacy.ndll and when are they needed?


They are required to run your application, they contain code to open the window for instance.

It’s possible you need only one of them,
unless you compile with -Dhybrid or -Dlegacy you only need lime.ndll.

Thanks ibilon.

With neko as the target I can delete both *.ndll files and HelloWorld still runs (including opening a window), perhaps it falls back to the libraries that installed with neko in /usr/lib/… ?

With the cpp target I can delete lime.ndll and it still runs but deleting lime-legacy.ndll makes it fail.

It’s strange, maybe it managed to find a copy of the ndll in lime’s folder or something.

Then you are most likely in legacy mode, using any framework?

haxeui is the only thing I’ve installed above and beyond what’s included by default with OpenFL.

My HelloWorld uses haxeui and just has a button on a window.

Haxeui set the legacy mode until it’s compatible with the non-legacy version.
So you can delete lime.ndll but need to keep lime-legacy.ndll.

When you compile the Neko application, it hard-codes a path to where it might have found that file on your system. Unless you include the Lime binary with your project, it will be sure to crash when copied to another system :slight_smile: