Re: shared library problem
hi !
i got the sulution.
To the C project, i add my library in Automake Manager:
-->right click on "Program in bin" --> Options --> Libraries tab --> -lbktrans. and now the project can link to the shared library.
but to execute the application, i must specify the path to the shared library:
-->Project --> Options --> Run Option --> add "LD_LIBRARY_PATH" with the value /usr/local/lib
To the C++ project, the solution can find in the FAQ at http://www.kdevelop.org/mediawiki/in...#Libraries_FAQ
Thank you.
Re: shared library problem
i create a C++ project. there is a .cpp file uses some functions of a shared library, libbktrans.so.
i put the shared library ,libbktrans.so.0.0, and the library's .h file, BkTransLib.h, in /usr/local/lib.
to build this project, i need to link against the shared library.As the direction at http://www.kdevelop.org/mediawiki/in....so_library.3F .But i got a problem:
i can't do this: "on the libraries ("compiler") tab add libs in the second box (link libraries outside of project). Just enter the lib name, without the lib prefix and the .a or .so or .la or what ever ending" because i couldn't find the text "link library outside of project" in the tab compiler.
i couldn't link the shared library so when i build, there are errors: "undefined reference to" function of the shared library.
i'm using Kdevelop 3.3.1(Using KDE 3.5.1-2.3 Red Hat).
is there anyone show me how to handle this ?
Thanks and regard
Re: shared library problem
hi !
i'm using Kdevelop 3.3.1(Using KDE 3.5.1-2.3 Red Hat).
i have 2 files demo.c and BkTransLib.h, 1 shared library libbktrans.so.0.0
// demo.c
#include "BkTransLib.h"
int main() {
if (BKInit()) printf("Start BkTransLib ok\n");
else {
printf("Start BkTransLib Fail\n");
return 0;
}
}
//"BkTransLib.h"
int BKInit();
and libbktrans.so.0.0 is a shared library contains function BKInit()
i put libbktrans.so.0.0 in /usr/local/lib, make two links here
ln -sf libbktrans.so.0.0 libbktrans.so.0
ln -sf libbktrans.so.0 libbktrans.so
now i create a C project with Automake Manager, add the two files into it and build the project. Of course, i get an error: "undefined reference to BKInit()".it's because i haven't not added my shared library into the project.
To fix this, i open Automake Manager and select the project line, right-click and select Options from the drop menu. Choose the Library tab, in the second box("Link library outside project(LDADD)"), add -lbktrans.
rebuild the project -->Success
execute program, i get
Start BkTransLib ok
Press Enter to continue!
well, perfect !
Now i modify demo.c to create demo.cpp
//demo.cpp
#include "BkTransLib.h"
#include <qwhatsthis.h>
int main() {
if (BKInit()) qWarning( "Start BkTransLib ok\n" );
else {
qWarning("Start BkTransLib Fail\n");
return 0;
}
}
then i create a C++ project (C++ --> KDE --> Simple KDE Application), add demo.cpp and BkTransLib.h into it. Once again i get the error "undefined reference...". so i do the same as the C project. unluckily, the error does not disappear.
i don't know why, i even follow the direction of FAQ at http://www.kdevelop.org/mediawiki/in....so_library.3F
1. add -lbktrans in "link libraries outside of project" like above
2. add -L/usr/local/lib to the LDFLAGS in Project->Project Options...->Configure Options->Linker Flags(LDFLAGS)
3. add -I/usr/local/lib to the "Directories outside of project" in the tab Include
rebuild but nothing changes.
Please tell me what.
Thank you.
Re: shared library problem
Quote:
Originally Posted by
nhatkhang
1. add -lbktrans in "link libraries outside of project" like above
2. add -L/usr/local/lib to the LDFLAGS in Project->Project Options...->Configure
Try adding "-L/usr/local/lib -lbktrans" to "link libraries outside of project", make sure that /usr/local/lib is in /etc/ld.so.conf and rerun ldconfig.
Re: shared library problem
hi
i tried, but nothing changed
perhaps, the shared library libbktrans.so can't link into a C++ project.(this is my very stupid idea !)
because i was successful to link against a simple shared library to both C and C++ project.
does anyone have a better idea ?
Regards
nhatkhang
Re: shared library problem
Quote:
Originally Posted by
nhatkhang
because i was successful to link against a simple shared library to both C and C++ project.
But was it libbktrans.so or some other library? Maybe you forgot to add extern "C"?
Re: shared library problem
hi
i only built successfully with libbktrans.so on C project, but not C++ project
i followed the directions and example at http://tldp.org/HOWTO/Program-Librar...-examples.html to make a simple shared library, and i could handle both C and C++ project.
Re: shared library problem
Quote:
Originally Posted by
nhatkhang
I hope you didn't forgot about section 5.8. from that howto.
Re: shared library problem
hi !
i got the solution. you're the number one :o
thank you
nhatkhang