c++ - 将 boost 与 MinGW 一起使用时对 WinMain@16 的 undefined reference

标签 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);
}

我该如何解决这个错误?

最佳答案

看起来您没有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/

相关文章:

c++ - 'sqlite3_api' 未在此范围内声明

c++ - 线程安全内存池

c++ - BOOST_PP_ITERATE() 结果为 "no such file or directory"

c++ - ROS Linking errors using boost::filesystem library 在linux下使用C++

ruby - rvm 安装 ruby​​-1.9.3-p286 : Error running 'make -j 9' (OSX: Mountain Lion)

c - Eclipse 寻找 g++ 而不是 gcc

c++ - 从网站复制证书并使用脚本将其添加到受信任的根权限

c++ - 使用模板 <typename T> C++ 时如何初始化数组

c++ - boost.python 不支持并行性?

c++ - 使用 MinGW 在 Windows 上编译 PDCurses