我在 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 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);
}
我该如何解决这个错误?
最佳答案
看起来您没有main
方法。您可以使用 BOOST_TEST_MAIN
创建一个。 BOOST_TEST_MODULE
仅当且仅当 BOOST_TEST_DYN_LINK
已定义时才定义 main
。
关于c++ - 将 boost 与 MinGW 一起使用时对 WinMain@16 的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4663966/