I wrote a trivial library (one function to return a sum of 2 integers). Made a "library" type project, compiled it and got a nice libraryname.a file. So far so good.
Now to include it to my main project. Eons ago I was using Watcom and there I would just add .lib (I understand Code::Blocks names these .a but that's the same beast) and .h files to the project and that's it. Tried it with Code::Blocks and it's not working for some reason. First I got a new target "namelibrary" in addition to standard "debug + release" when I tried to add the .a file, which is suspicious, I don't need any new target... When I try to build the project I'm getting some error (which instantly disappears before I can read it, I don't know how to enable it to be not disappearing, normal errors just stay there after failed build attempt; that's the next question BTW, how to enable it)?
I suspect in Code::Blocks I should use some linker setting instead of adding the .a file to the project?
Note: This is a crossplatform project and leter I will use C::B to produce executables for Linux and Mac as well, I don't know if there is any difference how it works on these system (assuming I'm using C::B on all of them) but in case there is, please warn me.
How to include a static library in Code::Blocks?
Hi,
You need to setup the project. There should be a menu option for setting up the "Project Build Options". In the Project Build options screen, there is a linker section and a search directory section. You need to add the library into the Linker section, and possibly also in the search directory section.
This Link show those screen for C::B for a game I made, and it adds a few static libraries.
Good Luck
You need to setup the project. There should be a menu option for setting up the "Project Build Options". In the Project Build options screen, there is a linker section and a search directory section. You need to add the library into the Linker section, and possibly also in the search directory section.
This Link show those screen for C::B for a game I made, and it adds a few static libraries.
Good Luck
I'm getting "undefined reference to 'libraryfunctionname(int,int)' ".
What I did:
1) Project build options - Search Directory - Complier : Set the path to the library project folder (root, since it contains the .a file)
2) Project build options - Search Directory - Linker : Set the path to the library project folder (root, since it contains the .h file)
3) Project build options - Linker Settings : Set the path to the library project's .a file (root\libraryname.a)
I did all this for the "project name" so it is inherited by both Debug & Release, also removed the previous .a file I added to the project manually and deleted the additional (libraryname) target. Then I used the code as follows:
What I did:
1) Project build options - Search Directory - Complier : Set the path to the library project folder (root, since it contains the .a file)
2) Project build options - Search Directory - Linker : Set the path to the library project folder (root, since it contains the .h file)
3) Project build options - Linker Settings : Set the path to the library project's .a file (root\libraryname.a)
I did all this for the "project name" so it is inherited by both Debug & Release, also removed the previous .a file I added to the project manually and deleted the additional (libraryname) target. Then I used the code as follows:
#include <mytestlib.h>
void something()
{
libraryfunctionname(1,1);
}
OK, now the weird thing, I downloaded LUA sources and made a library out of it, then added it exactly as above. It works!
Next, I created a simple library myself from scratch (in case I messed up with the first one somehow) and added it, again, exactly as above (we are talking about minutes time difference, I'm sure I clicked everything identical way). It is not working
How come?
The full souce code of my library:
main.c
---------
int lib2(int a,int b)
{
return a+b;
}
---------
mylib2.h
---------
int lib2(int a,int b);
---------
EDIT: Solved, it required extern "C".
Next, I created a simple library myself from scratch (in case I messed up with the first one somehow) and added it, again, exactly as above (we are talking about minutes time difference, I'm sure I clicked everything identical way). It is not working
How come?
The full souce code of my library:
main.c
---------
int lib2(int a,int b)
{
return a+b;
}
---------
mylib2.h
---------
int lib2(int a,int b);
---------
EDIT: Solved, it required extern "C".
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement