I'm trying to use CppUnit on a project that is to build on both windows and linux. Currently the Linux side builds and runs fine. I downloaded the install of cppunit on windows and did a ./configure and make install which placed libs in cygwin/lib
libcppunit.a
libcppunit.dll.a
libcppunit.la
I've created a managed c++ make on windows and have specified that it should link in cppunit.
I get these linker errors and I can't seem to solve this one. Can anyone offer any advice.
g++ -LE:\Eclipse\ActiveMQ/activemq-cpp/out -oactivemq-cppTest ./test/main.o ./test/activemq/ActiveMQExceptionTest.o -lactivemq -lcppunit
./test/activemq/ActiveMQExceptionTest.o: In function `_GLOBAL__D_.._test_activemq_ActiveMQExceptionTest.cpp_9D2164D3_454439BC':
/cygdrive/e/Eclipse/ActiveMQ/activemq-cppTest/Debug/../test/activemq/ActiveMQExceptionTest.cpp:5: undefined reference to `CppUnit::TestSuiteBuilderContextBase::~TestSuiteBuilderContextBase()'
/cygdrive/e/Eclipse/ActiveMQ/activemq-cppTest/Debug/../test/activemq/ActiveMQExceptionTest.cpp:5: undefined reference to `CppUnit::TestSuiteBuilderContextBase::~TestSuiteBuilderContextBase()'
./test/activemq/ActiveMQExceptionTest.o: In function `_ZN7CppUnit11TestFixtureD1Ev':
/usr/local/include/cppunit/TestFixture.h:(.text$_ZN7CppUnit23TestSuiteBuilderContextIN8activemq21ActiveMQExceptionTestEED1Ev[CppUnit::TestSuiteBuilderContext<activemq::ActiveMQExceptionTest>::~TestSuiteBuilderContext()]+0x16): undefined reference to `CppUnit::TestSuiteBuilderContextBase::~TestSuiteBuilderContextBase()'
/usr/local/include/cppunit/TestFixture.h:(.text$_ZN7CppUnit27TestSuiteBuilderContextBaseC2ERKS0_[CppUnit::TestSuiteBuilderContextBase::TestSuiteBuilderContextBase(CppUnit::TestSuiteBuilderContextBase const&)]+0xb): undefined reference to `vtable for CppUnit::TestSuiteBuilderContextBase'
/usr/local/include/cppunit/TestFixture.h:(.text$_ZN7CppUnit23TestSuiteBuilderContextIN8activemq21ActiveMQExceptionTestEED0Ev[CppUnit::TestSuiteBuilderContext<activemq::ActiveMQExceptionTest>::~TestSuiteBuilderContext()]+0x16): undefined reference to `CppUnit::TestSuiteBuilderContextBase::~TestSuiteBuilderContextBase()'
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I had the same problems:
$ g++ *.cpp -lcppunit
/cygdrive/c/DOCUME~1/dima/LOCALS~1/Temp/cc1r4zAp.o:MoneyTest.cpp:(.text$_ZN9Mone
yTest5suiteEv[MoneyTest::suite()]+0x1c4): undefined reference to `CppUnit::TestS
uiteBuilderContextBase::~TestSuiteBuilderContextBase()'
/cygdrive/c/DOCUME~1/dima/LOCALS~1/Temp/cc1r4zAp.o:MoneyTest.cpp:(.text$_ZN9Mone
yTest5suiteEv[MoneyTest::suite()]+0x249): undefined reference to `CppUnit::TestS
uiteBuilderContextBase::~TestSuiteBuilderContextBase()'
/cygdrive/c/DOCUME~1/dima/LOCALS~1/Temp/cc1r4zAp.o:MoneyTest.cpp:(.text$_ZN7CppU
nit23TestSuiteBuilderContextI9MoneyTestED1Ev[CppUnit::TestSuiteBuilderContext<Mo
neyTest>::~TestSuiteBuilderContext()]+0x16): undefined reference to `CppUnit::Te
stSuiteBuilderContextBase::~TestSuiteBuilderContextBase()'
/cygdrive/c/DOCUME~1/dima/LOCALS~1/Temp/cc1r4zAp.o:MoneyTest.cpp:(.text$_ZN7CppU
nit27TestSuiteBuilderContextBaseC2ERKS0_[CppUnit::TestSuiteBuilderContextBase::T
estSuiteBuilderContextBase(CppUnit::TestSuiteBuilderContextBase const&)]+0xb): u
ndefined reference to `vtable for CppUnit::TestSuiteBuilderContextBase'
/cygdrive/c/DOCUME~1/dima/LOCALS~1/Temp/cc1r4zAp.o:MoneyTest.cpp:(.text$_ZN7CppU
nit23TestSuiteBuilderContextI9MoneyTestED0Ev[CppUnit::TestSuiteBuilderContext<Mo
neyTest>::~TestSuiteBuilderContext()]+0x16): undefined reference to `CppUnit::Te
stSuiteBuilderContextBase::~TestSuiteBuilderContextBase()'
collect2: ld returned 1 exit status
Then I call cppunit-config:
$ cppunit-config --libs
-L/usr/local/lib -lcppunit
So I changed command line to
$ g++ *.cpp -L/usr/local/lib -lcppunit
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I'm trying to use CppUnit on a project that is to build on both windows and linux. Currently the Linux side builds and runs fine. I downloaded the install of cppunit on windows and did a ./configure and make install which placed libs in cygwin/lib
libcppunit.a
libcppunit.dll.a
libcppunit.la
I've created a managed c++ make on windows and have specified that it should link in cppunit.
I get these linker errors and I can't seem to solve this one. Can anyone offer any advice.
g++ -LE:\Eclipse\ActiveMQ/activemq-cpp/out -oactivemq-cppTest ./test/main.o ./test/activemq/ActiveMQExceptionTest.o -lactivemq -lcppunit
./test/activemq/ActiveMQExceptionTest.o: In function `_GLOBAL__D_.._test_activemq_ActiveMQExceptionTest.cpp_9D2164D3_454439BC':
/cygdrive/e/Eclipse/ActiveMQ/activemq-cppTest/Debug/../test/activemq/ActiveMQExceptionTest.cpp:5: undefined reference to `CppUnit::TestSuiteBuilderContextBase::~TestSuiteBuilderContextBase()'
/cygdrive/e/Eclipse/ActiveMQ/activemq-cppTest/Debug/../test/activemq/ActiveMQExceptionTest.cpp:5: undefined reference to `CppUnit::TestSuiteBuilderContextBase::~TestSuiteBuilderContextBase()'
./test/activemq/ActiveMQExceptionTest.o: In function `_ZN7CppUnit11TestFixtureD1Ev':
/usr/local/include/cppunit/TestFixture.h:(.text$_ZN7CppUnit23TestSuiteBuilderContextIN8activemq21ActiveMQExceptionTestEED1Ev[CppUnit::TestSuiteBuilderContext<activemq::ActiveMQExceptionTest>::~TestSuiteBuilderContext()]+0x16): undefined reference to `CppUnit::TestSuiteBuilderContextBase::~TestSuiteBuilderContextBase()'
/usr/local/include/cppunit/TestFixture.h:(.text$_ZN7CppUnit27TestSuiteBuilderContextBaseC2ERKS0_[CppUnit::TestSuiteBuilderContextBase::TestSuiteBuilderContextBase(CppUnit::TestSuiteBuilderContextBase const&)]+0xb): undefined reference to `vtable for CppUnit::TestSuiteBuilderContextBase'
/usr/local/include/cppunit/TestFixture.h:(.text$_ZN7CppUnit23TestSuiteBuilderContextIN8activemq21ActiveMQExceptionTestEED0Ev[CppUnit::TestSuiteBuilderContext<activemq::ActiveMQExceptionTest>::~TestSuiteBuilderContext()]+0x16): undefined reference to `CppUnit::TestSuiteBuilderContextBase::~TestSuiteBuilderContextBase()'
I had the same problems:
$ g++ *.cpp -lcppunit
/cygdrive/c/DOCUME~1/dima/LOCALS~1/Temp/cc1r4zAp.o:MoneyTest.cpp:(.text$_ZN9Mone
yTest5suiteEv[MoneyTest::suite()]+0x1c4): undefined reference to `CppUnit::TestS
uiteBuilderContextBase::~TestSuiteBuilderContextBase()'
/cygdrive/c/DOCUME~1/dima/LOCALS~1/Temp/cc1r4zAp.o:MoneyTest.cpp:(.text$_ZN9Mone
yTest5suiteEv[MoneyTest::suite()]+0x249): undefined reference to `CppUnit::TestS
uiteBuilderContextBase::~TestSuiteBuilderContextBase()'
/cygdrive/c/DOCUME~1/dima/LOCALS~1/Temp/cc1r4zAp.o:MoneyTest.cpp:(.text$_ZN7CppU
nit23TestSuiteBuilderContextI9MoneyTestED1Ev[CppUnit::TestSuiteBuilderContext<Mo
neyTest>::~TestSuiteBuilderContext()]+0x16): undefined reference to `CppUnit::Te
stSuiteBuilderContextBase::~TestSuiteBuilderContextBase()'
/cygdrive/c/DOCUME~1/dima/LOCALS~1/Temp/cc1r4zAp.o:MoneyTest.cpp:(.text$_ZN7CppU
nit27TestSuiteBuilderContextBaseC2ERKS0_[CppUnit::TestSuiteBuilderContextBase::T
estSuiteBuilderContextBase(CppUnit::TestSuiteBuilderContextBase const&)]+0xb): u
ndefined reference to `vtable for CppUnit::TestSuiteBuilderContextBase'
/cygdrive/c/DOCUME~1/dima/LOCALS~1/Temp/cc1r4zAp.o:MoneyTest.cpp:(.text$_ZN7CppU
nit23TestSuiteBuilderContextI9MoneyTestED0Ev[CppUnit::TestSuiteBuilderContext<Mo
neyTest>::~TestSuiteBuilderContext()]+0x16): undefined reference to `CppUnit::Te
stSuiteBuilderContextBase::~TestSuiteBuilderContextBase()'
collect2: ld returned 1 exit status
Then I call cppunit-config:
$ cppunit-config --libs
-L/usr/local/lib -lcppunit
So I changed command line to
$ g++ *.cpp -L/usr/local/lib -lcppunit