I've been trying for a while to make a library static, than use it in another project but I haven't been successful.
What I did: made a static library project, added my files and compiled
made an empty project and wrote the test program
took the libmatrix.a from the static library folder and put it in test
add files to test project, added libmatrix.a in linker options, test folder to search directories-linker
and compiled
But I get these error:
||=== test, Release ===|
obj\Release\test.o||In function `main':|
C:\Users\Admin\Desktop\test\test.cpp|6|undefined reference to `matrix<5, 5, int>::matrix(int)'|
C:\Users\Admin\Desktop\test\test.cpp|7|undefined reference to `matrix<5, 5, int>::write(std::ostream&)'|
C:\Users\Admin\Desktop\test\test.cpp|8|undefined reference to `matrix<3, 3, int>::matrix(int)'|
C:\Users\Admin\Desktop\test\test.cpp|9|undefined reference to `matrix<3, 3, int>::write(std::ostream&)'|
||=== Build finished: 4 errors, 0 warnings ===|
What I don't get is why are the definitions missing if I have:
template<int X,int Y,class T>
matrix<X,Y,T>::matrix(int x){
for(int i=0;i<X;i++){
for(int j=0;j<Y;j++){
m[i][j]=T(0);
}
}
if(X==Y){
for(int i=0;i<X;i++){
m[i][i]=x;
}
}
}
and the other 2 functions in the matrix.cpp file that I added and compiled in the static library project
here are the 2 projects
http://www.mediafire.com/?jamtzhryymy , i believe you will have to change the folder in search directory-linker