December 31, 2002 Warning 140: Library probably needs FIXLIB | ||||
---|---|---|---|---|
| ||||
What does it mean? ("Warning 140: Library probably needs FIXLIB")
// file 1
int a;
// file 2
extern int a;
static int *b = &a;
void f()
{ }
compile both files and create a static library (lib -c ...)
// main
extern void f();
int main()
{
f();
}
compiled and trying to link with the library I get:
Warning 140: Library probably needs FIXLIB Error 42: Symbol Undefined ?a@@3HA (int a)
Workaround: write "int a = 0;" instead of "int a;" in file 1.
bye, Christof
--
http://cmeerw.org JID: cmeerw@jabber.at mailto cmeerw at web.de
...and what have you contributed to the Net?
|
December 31, 2002 Re: Warning 140: Library probably needs FIXLIB | ||||
---|---|---|---|---|
| ||||
Posted in reply to Christof Meerwald | I don't know what is meant by fixlib. However, the declaration: int a; generates a COMDAT which is not put into the symbol table in the library, and is not used to satisfy unresolved externals unless something else in that module is pulled in. This is not a bug, it is a deliberate way of doing things. The runtime library depends on it, for example. "Christof Meerwald" <cmeerw@web.de> wrote in message news:ausjsp$102c$2@digitaldaemon.com... > What does it mean? ("Warning 140: Library probably needs FIXLIB") > > // file 1 > int a; > > > // file 2 > extern int a; > static int *b = &a; > > void f() > { } > > > compile both files and create a static library (lib -c ...) > > // main > extern void f(); > > int main() > { > f(); > } > > > compiled and trying to link with the library I get: > > Warning 140: Library probably needs FIXLIB > Error 42: Symbol Undefined ?a@@3HA (int a) > > > Workaround: write "int a = 0;" instead of "int a;" in file 1. > > > bye, Christof > > -- > http://cmeerw.org JID: cmeerw@jabber.at mailto cmeerw at web.de > > ...and what have you contributed to the Net? |
Copyright © 1999-2021 by the D Language Foundation