Code::Blocks Forums

User forums => Using Code::Blocks => Topic started by: Justin on December 05, 2008, 08:35:16 am

Title: Help me with the linking of external library
Post by: Justin on December 05, 2008, 08:35:16 am
I have download some external libraries with extended name .a/.lib,  I want to link those libraries to my own project. I have configured the linker and seach path. But there are always problems. I cannot see the API lists of those libraries, and I cannot call the functions enveloped in those libraries.
My OS is Vista, and I am using the lastest version of CB.
What's wrong? Help!
 
Title: Re: Help me with the linking of external library
Post by: Ceniza on December 05, 2008, 08:44:00 am
Enable full compiler logging and copy&paste the problem here.

From Morten's signature: Logging: Settings->Compiler & Debugger->tab "Other"->Compiler logging="Full command line"
Title: Re: Help me with the linking of external library
Post by: Justin on December 05, 2008, 09:52:02 am

-------------- Build: Debug in testC ---------------

mingw32-g++.exe -Llib  -o bin\Debug\testC.exe obj\Debug\main.o    lib\libcluto.a
obj\Debug\main.o: In function `main':
D:/CppProjects/testC/main.c:73: undefined reference to `_CLUTO_VP_ClusterRB
'
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 0 seconds)
1 errors, 0 warnings
 
Title: Re: Help me with the linking of external library
Post by: Justin on December 05, 2008, 09:57:57 am
the document of those libraries said the libraries were compiled with gcc,  so did I use the wrong compiler, that is to say not mingw32-g++.exe,  but mingw32-gcc.exe?
Title: Re: Help me with the linking of external library
Post by: Jenna on December 05, 2008, 10:39:44 am
the document of those libraries said the libraries were compiled with gcc,  so did I use the wrong compiler, that is to say not mingw32-g++.exe,  but mingw32-gcc.exe?

I don't think so.
gcc is either the gnu-compiler-collection or the c-compiler included in gcc, in both cases it should not be causing your problem.

But if the lib really was compiled with mingw32-gcc it's a c-library and you have to declare the functions inside the header as extern "c" to make them usable with c++.

google for extern "c", to see how you can do this.
Title: Re: Help me with the linking of external library
Post by: Ceniza on December 05, 2008, 11:37:12 am
I've never tried to link a library like that myself, but you may try adding as library only "cluto" (without quotes, of course). That should change the command line in that to -lcluto.

If you are the one who has to write the API declarations, do as jens said.
Title: Re: Help me with the linking of external library
Post by: Jenna on December 05, 2008, 11:52:23 am
Try what Ceniza said, if that does not work, try to link with libcluto.lib.
According to the manual you have to use libcluto.a on unix-based systems and libcluto.lib on win32 systems.