Floating point not loaded
Clemens
eriatarka84 at gmail.com
Tue Jun 22 01:04:03 PDT 2010
Clemens Wrote:
> I have a stupid problem linking D with C. This is with D 1.062, haven't tried D2. So say I have two files:
>
> ------ cfmt.c --------
>
> #include <string.h>
>
> char* myfmt(double x)
> {
> static char buf[40];
> sprintf(buf, "%f", x);
> return buf;
> }
>
> ------- test.d --------
>
> extern(C) char* myfmt(double x);
>
> void main()
> {
> myfmt(42.3);
> }
>
> ---------------------------
>
> and I compile and link them as follows:
>
> > dmc -c cfmt.c
> > dmd test.d cfmt.obj
> > test.exe
>
> I get the runtime error "Floating point not loaded". No exception or anything, the executable just terminates with that message on the terminal. I found a short paragraph about that runtime error on
> http://www.digitalmars.com/ctg/runtime.html
> but it wasn't too helpful; a quick grep showed me that _fltused occurs in both cfmt.obj and test.obj.
>
> Anyone seen this before? What can I do? I'm pretty sure this used to work with an older version. The actual real-world use case is linking to Lua, which bombs out with the same message once you use the string concatenation operator with a numeric argument. I used the Lua binding from dsource which comes with a precompiled library, and just to be sure I then compiled my own version of Lua with dmc; to no avail.
>
> Clemens
FWIW, I found a workaround to this: if I specify to link with snn.lib explicitly on the command line, then everything seems to work. I'm a bit surprised since I thought that snn.lib is pulled in automatically. Is this a bug in DMD, in Optlink, or by some strange twist of fate expected behavior?
Clemens
More information about the Digitalmars-d
mailing list