Floating point not loaded
Robert Jacques
sandford at jhu.edu
Tue Jun 22 09:40:09 PDT 2010
On Tue, 22 Jun 2010 04:04:03 -0400, Clemens <eriatarka84 at gmail.com> wrote:
> 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
You always need to specify the libs you're linking too. This has always
been the case. There is a pragma statement that tells the compiler to link
a library, so you can specify the link in the code rather than the command
line.
More information about the Digitalmars-d
mailing list