www.digitalmars.com         C & C++   DMDScript  

c++.windows.32-bits - Three problems with linking and compiling

reply Micke <drontman home.se> writes:
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
Apr 24 2002
next sibling parent reply "Walter" <walter digitalmars.com> writes:
"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
Apr 25 2002
parent reply Micke <drontman home.se> writes:
"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
Apr 25 2002
parent reply "Walter" <walter digitalmars.com> writes:
"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>.
Apr 25 2002
parent Micke <drontman home.se> writes:
"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.
Apr 27 2002
prev sibling parent reply "Walter" <walter digitalmars.com> writes:
"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.
Apr 25 2002
parent reply Jan Knepper <jan smartsoft.cc> writes:
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
Apr 25 2002
parent "Walter" <walter digitalmars.com> writes:
"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.
Apr 25 2002