неопределенная ссылка на WinMain @ 16 при использовании boost с MinGW - PullRequest
4 голосов
/ 12 января 2011

Я программирую на C ++ с Eclipse под Windows 7.

Мой make-файл выглядит так:

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 '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 голосов
/ 12 января 2011

Похоже, у вас нет main метода.Вы можете создать его, используя BOOST_TEST_MAIN.BOOST_TEST_MODULE определяет main только в том случае, если BOOST_TEST_DYN_LINK уже определено.

...