[Please do not mail me a copy of your followup] boost-users@lists.boost.org spake the secret code <1365797624390-4645257.post@n4.nabble.com> thusly:
I have build a 1.53 boost library for x64 and it seems works.
But my unit test still not build successfully. But it looks like different issue.
I have studio 2010 solution (just for my practice to use Boost Test) which include two simple win32 applications: one called MyMathApp and one for unit test called MyMathTest.
In MyMathApp, it has class implemented in mymath.h / mymath.cpp. I want to unit test it in MyMathTest.
In my MyMathApp, I have TestMyMath.cpp:
#define BOOST_TEST_MAIN #include
#include "mymath.h"
BOOST_AUTO_TEST_SUITE(CMyMathTests)
BOOST_AUTO_TEST_CASE (test1) { CMyMath<int> m; BOOST_CHECK(m.add(2,3) == 5); }
BOOST_AUTO_TEST_SUITE_END()
I also add the mymath.h / mymath.cpp to my test project (not physically copy, just add to the project in solution explorer).
When I build it, I got error: error LNK2019: unresolved external symbol "public: static int __cdecl CMyMath<int>::add(int,int)" (?add@?$CMyMath@H@@SAHHH@Z) referenced in function "public: void __cdecl CMyMathTests::test1::test_method(void)" (?test_method@constructortest1@CMyMathTests@@QEAAXXZ)
CMyMath is a template class, so all of it's definitions (not just declarations) must be available at the point of instantiation so the compiler can resolve the references. It appears that your definition of CMyMath<T>::add(T,T) is only declared and not defined in the .h you included. Additionally, it appears that this was declared as a static method. That means you didn't need an instance 'm' in order to call it, but there's no harm done in calling it the way you did, just a little confusing to anyone who reads this code as it will read like an instance method but it's a static method that doesn't require an instance. -- "The Direct3D Graphics Pipeline" free book http://tinyurl.com/d3d-pipeline The Computer Graphics Museum http://computergraphicsmuseum.org The Terminals Wiki http://terminals.classiccmp.org Legalize Adulthood! (my blog) http://legalizeadulthood.wordpress.com