Please disregard all previous references to compiler problems of external variables.
This is an FPC 1.0.2 problem under Linux.
What I have noticed is that the ($MODE FPC} switch is global and cannot be toggled
during the compilation of a given pascal unit.
The compiler mode regulates whether the following line will compile properly:
{$LINKLIB CMLB}
Var
test : integer ; cvar ; external ;
This will not compile under DELPHI mode, but it will under FPC mode. (COMMAND LINE)
My workaround would be to use {$MODE} to switch ON the FPC mode and off immediately after the code
for the external variable. What happens in fact is the compiler mode seems locked to either one mode or another
for a given compile and cannot be changed on the fly.
Thus, delphi mode compilations of a given unit fail while FPC mode compilations succeed. This appears to be a bug
by not allowing a given compilation of units to compile under different modes.
Some example code:
Var
{$MODE FPC} //Turn FPC compiler mode on
test : integer ; cvar ; external ;
{$MODE DEFAULT}//Restore original compiler mode
{$MODE FPC} //Turn FPC compiler mode on
test2 : integer ; external name 'test2' ; ///(NAMED VERSION)
{$MODE DEFAULT}//Restore original compiler mode
It spits a compiler error about: Syntax error, : expected but ; found.
or for the named version of the declaration
It spits a compiler error about: Syntax error, : expected but NAME found.
Any help appreciated,
Mark Diener