【问题标题】:Linker chooses "wrong" main with Boost.Test链接器使用 Boost.Test 选择“错误”的 main
【发布时间】:2012-08-23 07:22:05
【问题描述】:

在使用 Boost.Test 时,通常不需要定义 main() 函数,因为 Boost.Test 自己提供了一个。

我最近不得不将我的项目转换为使用 3rd 方库的静态链接(在 VS2010 上)。自然地,我必须链接到多个.libs 以便构建成功,并且我的构建运行得很好。

但是,当我运行我的测试项目时,发生了一件非常奇怪的事情。似乎我的一个依赖库所需的第 3 方之一 .libs (libpng) 包含一个测试文件,其中定义了 main() 函数(pngtest.c,如果你必须知道的话)。
由于我的项目没有main() 函数,因此链接器选择了它作为我的“测试”应用程序。因此,我没有运行任何测试。

有人知道我如何防止这种情况发生吗?如何告诉链接器/编译器使用 Boost.Test main()

【问题讨论】:

    标签: main static-linking libpng boost-test


    【解决方案1】:

    回答我自己的问题,并澄清@Tom 的回答。
    原来我使用的libpng 构建脚本不是libpng 的原始版本,而是由OpenCV 构建系统创建的。文件pngtest.c 被错误地包含在构建中。

    问题的解决方案是从 libpng 构建脚本中删除 pngtest.c
    最新的 OpenCV 版本,不再包含此文件。

    更多详情请看my post to Boost mailing list这里和我的OpenCV bug report here

    【讨论】:

      【解决方案2】:

      阿迪,我也遇到了同样的问题。看起来你已经完成了这个。多亏了 Google 和您的努力,我才弄明白了。

      这里有一些信息可以完善答案:

      基本上,我只是从 libpng 项目中排除了 pngtest.c 文件,然后重新编译了 OpenCV。看起来它将在 OpenCV 的下一个版本中修复。

      谢谢!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-01
        • 1970-01-01
        相关资源
        最近更新 更多