使用MinGW和boost时出现undefined reference to WinMain@16错误

4
我是在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个回答

4

看起来你没有main方法,你可以使用BOOST_TEST_MAIN创建一个。只有在已经定义了BOOST_TEST_DYN_LINK的情况下,BOOST_TEST_MODULE才会定义main


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接