Thread overview
Three problems with linking and compiling
Apr 24, 2002
Micke
Apr 25, 2002
Walter
Apr 25, 2002
Micke
Apr 26, 2002
Walter
Apr 27, 2002
Micke
Apr 25, 2002
Walter
Apr 25, 2002
Jan Knepper
Apr 25, 2002
Walter
April 24, 2002
Problem 1, linking:
If I try to link these object files to an static library from the ide it
shows fatal error.
I'm using templates and exceptions.
And if I try to run linking manually I got this error

Digital Mars Librarian Version 7.6B3n
Copyright (C) Digital Mars 2000.  All Rights Reserved.
action-object [-+*] (.obj)  + c:\tmp\tools\gd.OBJ + c:\tmp\tools
\gdfonts.OBJ + c:\tmp\tools\gif_MH_DC.OBJ &
action-object [-+*] (.obj)               + c:\tmp\tools\MHChart.OBJ + c:
\tmp\tools\MHCrypt.OBJ + c:\tmp\tools\MHDate.OBJ
 + c:\tmp\tools\MHDateChart.OBJ &
action-object [-+*] (.obj)               + c:\tmp\tools\MHDC.OBJ + c:
\tmp\tools\MHDebug.OBJ + c:\tmp\tools\MHDom.OBJ + c
:\tmp\tools\MHDouble.OBJ &
action-object [-+*] (.obj)               + c:\tmp\tools\MHException.OBJ
+ c:\tmp\tools\MHGrid.OBJ + c:\tmp\tools\MHNumCh
art.OBJ + c:\tmp\tools\MHPoint.OBJ &
action-object [-+*] (.obj)               + c:\tmp\tools\MHSignal.OBJ +
c:\tmp\tools\MHTest.OBJ + c:\tmp\tools\MHUtil.OBJ

list file           (.lst)
output library file (.lib)

Assertion failure: 'len <= IDMAX' on line 129 in file 'libin.cpp'

abnormal program termination



Problem 2, compiling fltk gui library
These functions seems to be the same for the compiler.
They compile with gcc and msvc. I removed all "dublicates" and it
works ok with dm but...

FL_EXPORT int fl_draw_pixmap(/*const*/ char* const* data, int x,int
y,Fl_Color=FL_GRAY);
FL_EXPORT int fl_draw_pixmap(const char* const* data, int x,int
y,Fl_Color=FL_GRAY);



Problem 3, berkeley db library
The compiler failes with log\log_archive.c and a call to getcwd
function.
It never stops compiling until it runs out of memory.
The library does have an config.h for different kind of settings but
it doesn't do me any wiser.

I'm using xp by the way.

/Micke

April 25, 2002
"Micke" <drontman@home.se> wrote in message news:Xns91FAD79551A5Ddrontmanhomese@63.105.9.61...
> Problem 1, linking:
> If I try to link these object files to an static library from the ide it
> shows fatal error.
> I'm using templates and exceptions.
> And if I try to run linking manually I got this error
>
> Assertion failure: 'len <= IDMAX' on line 129 in file 'libin.cpp' abnormal program termination

This means the length of an identifier exceeds the limit of the .obj file format.

> Problem 2, compiling fltk gui library
> These functions seems to be the same for the compiler.
> They compile with gcc and msvc. I removed all "dublicates" and it
> works ok with dm but...
>
> FL_EXPORT int fl_draw_pixmap(/*const*/ char* const* data, int x,int
> y,Fl_Color=FL_GRAY);
> FL_EXPORT int fl_draw_pixmap(const char* const* data, int x,int
> y,Fl_Color=FL_GRAY);

This has been reported, but I haven't fixed it yet.


> Problem 3, berkeley db library
> The compiler failes with log\log_archive.c and a call to getcwd
> function.
> It never stops compiling until it runs out of memory.
> The library does have an config.h for different kind of settings but
> it doesn't do me any wiser.

If you could isolate it down to the smallest reproducible test case, and email it to me, I can likely get it fixed. -Walter


April 25, 2002
"Micke" <drontman@home.se> wrote in message news:Xns91FAD79551A5Ddrontmanhomese@63.105.9.61...
> Problem 1, linking:
> If I try to link these object files to an static library from the ide it
> shows fatal error.
> I'm using templates and exceptions.
> And if I try to run linking manually I got this error
> Assertion failure: 'len <= IDMAX' on line 129 in file 'libin.cpp'

I did some more checking. This is a fault of the Microsoft OMF library file format. It does not allow identifiers exceeding 512 or so in length. The only solution is to shorten the identifiers or link in those .obj files separately.


April 25, 2002
I've got a pached version of LIB.exe with an extended IDMAX... (I think that it
what the name of the #define was...)
Seems to work just fine!
Jan



April 25, 2002
"Jan Knepper" <jan@smartsoft.cc> wrote in message news:3CC7EED1.4C3455DD@smartsoft.cc...
> I've got a pached version of LIB.exe with an extended IDMAX... (I think
that it
> what the name of the #define was...)
> Seems to work just fine!
> Jan

It shouldn't work :-( the dictionary in it might be corrupt.


April 25, 2002
"Walter" <walter@digitalmars.com> wrote in news:aa89n0$2583$3@digitaldaemon.com:

> 
> "Micke" <drontman@home.se> wrote in message news:Xns91FAD79551A5Ddrontmanhomese@63.105.9.61...
>> Problem 1, linking:
>> If I try to link these object files to an static library from the ide
>> it shows fatal error.
>> I'm using templates and exceptions.
>> And if I try to run linking manually I got this error
>>
>> Assertion failure: 'len <= IDMAX' on line 129 in file 'libin.cpp' abnormal program termination
> 
> This means the length of an identifier exceeds the limit of the .obj file format.


It looks like that these three typedefs that have been commented out is the source of the problem. Is there anything I can do about it ?

typedef vector<string>                      StringVect; typedef vector<string>                      StringVect; typedef vector<string>::iterator            StringVectIt; typedef vector<string>::reverse_iterator    StringVectRIt; typedef vector<double>                      DoubleVect; typedef vector<double>::iterator            DoubleVectIt; typedef map<string,double>                  DoubleMap; //typedef map<string,double>::iterator        DoubleMapIt; typedef map<string,int>                     IntMap; //typedef map<string,int>::iterator           IntMapIt; typedef map<string,string>                  StringMap; //typedef map<string,string>::iterator         StringMapIt;


> 
>> Problem 3, berkeley db library
>> The compiler failes with log\log_archive.c and a call to getcwd
>> function.
>> It never stops compiling until it runs out of memory.
>> The library does have an config.h for different kind of settings but
>> it doesn't do me any wiser.
> 
> If you could isolate it down to the smallest reproducible test case, and email it to me, I can likely get it fixed. -Walter
> 

The source is to big to create a test case, but I solved it quick and dirty by taking getcwd source from the library source and rename the function and pasted it into the file that was giving me the problem.

/Micke

April 26, 2002
"Micke" <drontman@home.se> wrote in message news:Xns91FBE4FFA1486drontmanhomese@63.105.9.61...
> "Walter" <walter@digitalmars.com> wrote in news:aa89n0$2583$3@digitaldaemon.com:
> > "Micke" <drontman@home.se> wrote in message news:Xns91FAD79551A5Ddrontmanhomese@63.105.9.61...
> >> Assertion failure: 'len <= IDMAX' on line 129 in file 'libin.cpp' abnormal program termination
> > This means the length of an identifier exceeds the limit of the .obj file format.
> It looks like that these three typedefs that have been commented out
> is the source of the problem. Is there anything I can do about it ?
> typedef vector<string>                      StringVect;
> typedef vector<string>                      StringVect;
> typedef vector<string>::iterator            StringVectIt;
> typedef vector<string>::reverse_iterator    StringVectRIt;
> typedef vector<double>                      DoubleVect;
> typedef vector<double>::iterator            DoubleVectIt;
> typedef map<string,double>                  DoubleMap;
> //typedef map<string,double>::iterator        DoubleMapIt;
> typedef map<string,int>                     IntMap;
> //typedef map<string,int>::iterator           IntMapIt;
> typedef map<string,string>                  StringMap;
> //typedef map<string,string>::iterator         StringMapIt;

You mean uncommenting them produces the problem? It doesn't look like "map" can be reduced in length very effectively. Sigh.

> The source is to big to create a test case, but I solved it quick and dirty by taking getcwd source from the library source and rename the function and pasted it into the file that was giving me the problem.

Ok, but I can't solve the problem in the compiler that way <g>.


April 27, 2002
"Walter" <walter@digitalmars.com> wrote in news:aaatg6$23rq$2@digitaldaemon.com:

> 
> You mean uncommenting them produces the problem? It doesn't look like "map" can be reduced in length very effectively. Sigh.

After more testing it looks like using stl gives unpredictable result.
I really can't say exact what with stl that creates the problem.
In one case I had several overloads of operators and when I added
the ">" operator in a class the ide crached during compiling.
Then I found that I had included stl and had a few test lines with
stl in another file and when I removed those lines it worked.
I can't reproduce a good test case, sorry about that.