2011-01-11 15 views
3

でブーストを使用しているとき、私はC言語でプログラミングしてい++未定義の参照のMinGW

次のように私のメイクファイルは、次のとおりです。

build: 
    g++ -shared -o "lib\libCacheOpt.a" "src\*.cpp" -enable-auto-import -I"${CWD}\include" -I"${BOOST}" -L"${BOOST}\lib" -lboost_program_options -lboost_unit_test_framework 

exec: build 
    g++ "src\main.cpp" -enable-auto-import -I"${CWD}\include" -L"${CWD}\lib" -I"${BOOST}" -L"${BOOST}\lib" -lCacheOpt -lboost_program_options -o Simulator.exe 

test: build 
    g++ "test\unit\*.cpp" -enable-auto-import -I"${CWD}\include" -L"${CWD}\lib" -I"${BOOST}" -L"${BOOST}\lib" -lmingw32 -lCacheOpt -lboost_unit_test_framework -o run_tests.exe 

clean: 
    rm Simulator.exe 
    rm "lib\libCacheOpt.a" 

私はmake buildまたはmake execすべてを行うと正常に動作します。ただし、make testを使用した場合はundefined reference to '[email protected]'となります。 test/でのみファイルは、ブーストのユニットテストフレームワークを使用して、このいずれかになります。

#define BOOST_TEST_MODULE ChunkTest 
#include <boost/test/unit_test.hpp> 

#include <Chunk.h> 
using namespace CacheOpt; 

BOOST_AUTO_TEST_CASE(getChunks) 
{ 
    Chunk::setSize(10); 
    BOOST_CHECK_EQUAL(Chunk::getSize(), 11); 
} 

どのように私はこのエラーを解決することができますか?

答えて

3

mainメソッドがないようです。 BOOST_TEST_MAINを使用して作成できます。 BOOST_TEST_MODULEは、すでにBOOST_TEST_DYN_LINKが定義されている場合にのみmainと定義します。