This site contains older material on Eiffel. For the main Eiffel page, see http://www.eiffel.com.

Cannot compile generated system (multithreaded)

Problem

During a freeze, the C compilation produces errors:

    efrozen.c(9541) : error C2065: 'eif_thr_join_all' : undeclared identifier
    efrozen.c(9542) : error C2065: 'eif_thr_yield' : undeclared identifier
    efrozen.c(9548) : error C2065: 'eif_thr_mutex_create' : undeclared identifier
    efrozen.c(9549) : error C2065: 'eif_thr_mutex_lock' : undeclared identifier
    efrozen.c(9550) : error C2065: 'eif_thr_mutex_trylock' : undeclared identifier
    efrozen.c(9551) : error C2065: 'eif_thr_mutex_unlock' : undeclared identifier
    efrozen.c(9563) : error C2065: 'eif_thr_create' : undeclared identifier
    efrozen.c(9564) : error C2065: 'eif_thr_exit' : undeclared identifier
    

See also: Borland problems

Explanation

Your system uses multithreading, but the multithreaded library was not included at the C compilation and linking stage.

Fix

Add the line

    multithreaded (yes)

to the default clause of your Ace file.

Note: precompiled libraries and multithreading

If you rely on precompiled libraries, you will need a different version of the precompiled libraries in multithreaded and non-multithreaded modes. Instead of base and wel use base-mt and wel-mt in multithreaded mode. Make sure that the precompiled entry in the Ace file references the version that you need for your system.

If you still have a problem, contact ISE customer support http://support.eiffel.com