BUG: Using the Iostream Library with Alternate Math in C

ID: Q85873

7.00 | 1.00 1.50 MS-DOS | WINDOWS kbprg kbbuglist

The information in this article applies to:

SYMPTOMS

Linking an application that uses the iostream library with an alternate math library generates the following errors:

   error L2029: 'FISRQQ': unresolved external
   error L2029: 'FJSRQQ': unresolved external
   error L2029: 'FIWRQQ': unresolved external
   error L2029: 'FIARQQ': unresolved external
   error L2029: 'FJARQQ': unresolved external
   error L2029: 'FICRQQ': unresolved external
   error L2029: 'FJCRQQ': unresolved external
   error L2029: 'FIDRQQ': unresolved external
   error L2029: 'FIERQQ': unresolved external

RESOLUTION

If the source was compiled with /FPa, explicitly link with the emulator or coprocessor library instead of letting the linker choose the alternative math libraries by default. This can be done by adding the /NOD option to the libraries field of the link command line as shown below:

     link ... ,,, /NOD:<m>libca <m>libc<y> ...

Where <m> is memory model: s, m, c, or l. <y> is math option: e or 7

-or-

Recompile with /FPi or /FPi87, rather than /FPa, so that the linker is passed the name of the emulator or coprocessor library.

-or-

Convert the code so that it does not use the iostream library.

STATUS

Microsoft has confirmed this to be a problem in the products listed at the beginning of this article. We are researching this problem and will post new information here in the Microsoft Knowledge Base as it becomes available.

This is not a problem in Visual C++ 32-bit Edition, because /FPa is not supported.

MORE INFORMATION

The following code example demonstrates this problem:

Sample Code

/* Compile options needed: /FPa
*/ 

#include <iostream.h>

void main( )
{
   float FloatVar=2.718;

   cout << FloatVar;
}

Additional reference words: 7.00 1.00 1.50 KBCategory: kbprg kbbuglist KBSubcategory: CRTIss Keywords : kb16bitonly

Last Reviewed: July 18, 1997