在MinGW中使用boost时,未定义对WinMain @ 16的引用

时间:2011-01-11 23:46:10

标签: c++ boost makefile mingw eclipse-cdt

我在Windows 7下使用Eclipse进行C ++编程。

我的makefile如下:

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 buildmake exec时,一切正常。但是,在使用make test时,我会获得undefined reference to 'WinMain@16'test/下的唯一文件就是这个,使用boost的单元测试框架:

#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);
}

如何解决此错误?

1 个答案:

答案 0 :(得分:4)

看起来你没有main方法。您可以使用BOOST_TEST_MAIN创建一个。 BOOST_TEST_MODULE仅定义main当且仅当BOOST_TEST_DYN_LINK已定义。