3

Boost.Test を使用する場合、通常、main()Boost.Test 自体が関数を提供するため、関数を定義する必要はありません。

最近、プロジェクトを変換して、サードパーティ ライブラリの静的リンクを使用する必要がありました (VS2010 上)。.lib当然のことながら、ビルドが成功するよう に複数の にリンクする必要があり、私のビルドは問題なく実行されました。

しかし、テスト プロジェクトを実行すると、非常に奇妙なことが起こりました。.lib私の依存ライブラリの1つに必要なサードパーティのs(libpng)の1つに、(知っておく必要がある場合)main()内に関数が定義されたテストファイルが含まれていたようです。 私のプロジェクトには機能がなかったので、リンカーはそれを私の「テスト」アプリケーションとして選択しました。したがって、私のテストは実行されません。pngtest.c
main()

これを防ぐ方法を知っている人はいますか?リンカー/コンパイラに Boost.Test を使用するように指示するにはどうすればよいmain()ですか?

4

2 に答える 2

2

私自身の質問に答え、@Tomの答えを明確にします。
私が使用していたlibpngビルドスクリプトは、元の出荷時ではなくlibpng、OpenCVビルドシステムによって作成されたものであることがわかりました。ファイルpngtest.cが誤ってビルドに含まれていました。

この問題の解決策はpngtest.c、libpngビルドスクリプトから削除することでした。
最新のOpenCVバージョンには、このファイルは含まれていません。

詳細については、Boostメーリングリストへの投稿OpenCVバグレポートを参照してください

于 2012-10-14T07:40:06.713 に答える
1

アディ、私も同じ問題を抱えていました。あなたはすでにこれのいたるところにいたようです。グーグルとあなたの努力のおかげで、私はそれを理解することができました。

答えをまとめるための情報は次のとおりです。

基本的にpngtest.c、libpngプロジェクトからファイルを除外し、OpenCVを再コンパイルしました。OpenCVの次のリリースで修正されるようです。

ありがとう!

于 2012-10-14T04:14:54.493 に答える