[gnu.g++.help] Weird linking problem

steinarb@IDT.UNIT.NO (Steinar Bang) (02/28/91)

I have a problem:
My IV 2.6 program will link on one system, but *not* on a simingly
similar system.

Facts: system#1 (where it will *not* link) is a Sun3/SunOS-4.1 system
        with g++-1.37.2BETA.
       system#2 (where it links faultlessly) is a Sun3/SunOS-4.1
        system with g++-1.37.0

      - libInterViewsX11.a and libgraphic.a were compiled by no version
        later than g++-1.37.0 on both machines, originally (I recompiled
        libInterViewsX11.a on system#1 with g++-1.37.2BETA without any
        changes in the linking error messages).

The error messages on system#1 looks like this:
============starts here===============
g++ -o callgraph -L./ callgraph.o main.o view.o -lgraphic -lInterViewsX11 -lX11 -lm
callgraph.o: Undefined symbol Dialog::Dialog(ButtonState *, Interactor *, Alignment) referenced from text segment
callgraph.o: Undefined symbol Graphic::Align(Alignment, Graphic *, Alignment) referenced from text segment
callgraph.o: Undefined symbol MonoScene::DoInsert(Interactor *, boolean, int &, int &) referenced from data segment
callgraph.o: Undefined symbol Dialog::Popup(Event &, boolean) referenced from data segment
view.o: Undefined symbol GraphicBlock::GraphicBlock(Sensor *, Graphic *, int, Alignment, Zooming) referenced from text segment
*** Error code 1
make: Warning: Target `callgraph' not remade because of errors
==========ends here============

Running "nm -op" looking for the Dialog constructor in both the
liberary and my objectfiles gives me similar results on *both* systems,
that is:
   1. The name-mangeled symbol in libInterViewsX11.a seems to lack the
      last argument:
      libInterViewsX11.a:dialog.o:00000010 T ___6DialogP11ButtonStateP10InteractorUi
   2. The name-mangeled symbol in Callgraph.o seems to have this argument:
      callgraph.o:         U ___6DialogP11ButtonStateP10Interactor9Alignment

The Alignment argument is here initialized in the class definition of
class Dialog : "...,Alignment=Center);"

Both Alignment and boolean (one, or both of which appears in all
errormessages) are "typedef unsigned"

If anyone has seen these symptoms before, I would be grateful if they
would give me a hint.

Thanx in advance!

- Steinar