[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kdevelop
Subject:    linking problems
From:       "M. Ritscher" <mr203010spam () gmx ! net>
Date:       2003-04-30 18:50:08
[Download RAW message or body]

Hi all,

I'v got some problems linking a project. Whilst browsing the archive/web I 
learned a bit about libraries and how to handle them using KDevelop. Still 
there is something I can't get working in KDevelop.

Imaging the following project structure:

-----------------------------
projectCPP (folder
   folderA (static library)
     folderB (static libary)
       ClassB1
       ClassB2
     ClassA1
     ClassA2
  ClassProjectCPP
----------------------------

with the following references between the classes:

------------------------------------
ClassProjectCPP::ClassProjectCPP(){
  ClassB1* b1 = new ClassB1();
  b1->foo();
}

ClassB1::foo(){
  ClassA1* a1 = new ClassA1();
  a1->foobar();
}

ClassA1::foobar(){
  //do something
}
-----------------------------------

When linking I get an error:

/bin/sh ../libtool --silent --mode=link --tag=CXX g++ -Wnon-virtual-dtor 
-Wno-long-long -Wundef -Wall -pedantic -W -Wpointer-arith 
-Wmissing-prototypes -Wwrite-strings -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE 
-Wcast-align -Wconversion -O2 -O0 -g3 -Wall -fno-exceptions -fno-check-new -o 
projectcpp -L/usr/X11R6/lib -L/usr/lib/qt3/lib -L/opt/kde3/lib -R 
/opt/kde3/lib -R /usr/lib/qt3/lib -R /usr/X11R6/lib projectcpp.o main.o 
projectcpp.moc.o ./folderA/libfolderA.a ./folderA/folderB/libfolderB.a 
-lqt-mt -lpng -lz -lm -lXext -lX11 -lSM -lICE -lpthread -lkdecore -lkdeui
./folderA/folderB/libfolderB.a(classb1.o): In function `ClassB1::foo()':
>>>>>>>>>>>>>>>>
/home/moppel/projects/projectcpp/projectcpp/folderA/folderB/classb1.cpp:27: 
undefined reference to `ClassA1::ClassA1[in-charge]()'
>>>>>>>>>>>>>>>>
/home/moppel/projects/projectcpp/projectcpp/folderA/folderB/classb1.cpp:29: 
undefined reference to `ClassA1::foobar()'
collect2: ld returned 1 exit status

From my understanding this is bound to fail because "libfolderA.a" isn't  
referenced until "libfolderB.a" is linked.

When swapping these to around and issuing the same command at the command line
(note the order)
... ./folderA/folderB/libfolderB.a  ./folderA/libfolderA.a ...

~/projects/projectcpp/projectcpp> ../libtool --silent --mode=link --tag=CXX 
g++ -Wnon-virtual-dtor -Wno-long-long -Wundef -Wall -pedantic -W 
-Wpointer-arith -Wmissing-prototypes -Wwrite-strings -ansi 
-D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -O2 -O0 -g3 -Wall 
-fno-exceptions -fno-check-new -o projectcpp -L/usr/X11R6/lib 
-L/usr/lib/qt3/lib -L/opt/kde3/lib -R /opt/kde3/lib -R /usr/lib/qt3/lib -R 
/usr/X11R6/lib projectcpp.o main.o projectcpp.moc.o 
./folderA/folderB/libfolderB.a ./folderA/libfolderA.a -lqt-mt -lpng -lz -lm 
-lXext -lX11 -lSM -lICE -lpthread -lkdecore -lkdeui

it succeeds.

How can I get this working?

I've put the project on the web in case the above isn't expressed clearly 
enough.
"http://home.arcor.de/mritscher/kdevelop/projectCpp.tar.bz2"

Any help appreciated! Forgive me if it's not a kdevelop related issue.
I'm using KDevelop 2.1.5 on KDE 3.1.0

Cheers,

Moppel


-
to unsubscribe from this list send an email to kdevelop-request@kdevelop.org with the following body:
unsubscribe »your-email-address«

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic