将 boost 与 MinGW 一起使用时对 WinMain@16 的未定义引用

发布于 2024-10-11 05:42:28 字数 1158 浏览 3 评论 0原文

我在 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时,我得到对'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);
}

我怎样才能解决这个错误?

I'm programming in C++ with Eclipse under Windows 7.

My makefile is as follows:

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"

When I do make build or make exec everything works fine. However, when using make test I get undefined reference to 'WinMain@16'. The only file under test/ is this one, using boost's unit test framework:

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

How can I resolve this error?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

聽兲甴掵 2024-10-18 05:42:28

您似乎没有 main 方法。您可以使用 BOOST_TEST_MAIN 创建一个。当且仅当已经定义了 BOOST_TEST_DYN_LINK 时,BOOST_TEST_MODULE 才定义 main

It looks like you don't have a main method. You can create one using BOOST_TEST_MAIN. BOOST_TEST_MODULE only defines main if and only if BOOST_TEST_DYN_LINK is already defined.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文