2

あまり意味のない背景: Visual Studio 2010 を使用して CGAL をビルドしようとしています。これは GMP および MPFR ライブラリに依存しています。CGAL に依存するプロジェクトを構築しています。

プロジェクトをビルドすると、リンカー エラーが発生します。

error LNK1104: cannot open file 'gmp-vc100-mt-sgd.lib'

ただし、gmp.lib ファイルで GMP を使用するように CGAL に指示しました。そして実際に使われています。しかし、どういうわけかリンカーは追加で gmp-vc100-mt-sgd.lib を必要としています。したがって、「gmp-vc100-mt-sgd.lib」がデフォルト名で、CGAL 構成の .h ファイルを変更して「gmp.lib」に変更しました。私はすべての可能な場所をチェックしました:

  • 私のプロジェクトのリンカー - >追加の依存関係にはそのようなライブラリはありません
  • 私のプロジェクトからこのライブラリへの参照はありません
  • 上記は私のソリューションのすべてのプロジェクトに適しています
  • #pragma comment(lib, "gmp-vc100-mt-sgd.lib")インクルードされた .h ファイルにはディレクティブはありません(プロジェクト内のすべてのファイルに対して .i プリプロセッサ出力を生成しました)

CGAL を再構築し、ソリューションを再構築しようとしましたが、結果は得られませんでした。リンカーはまだ古い 'gmp-vc100-mt-sgd.lib' ファイルを必要としています。

私は立ち往生しています。チェックする他のオプションはありますか?追加の .lib 依存関係が由来する他のソースはありますか? gmp-vc100-mt-sgd.lib の唯一の言及は、/DEFAULTLIB: ディレクティブの下の CGAL .lib および .obj ファイルにあります。CGAL ソリューションのすべてのファイルを検索して、この魔法の gmp-vc100-mt-sgd.lib 名の言及を見つけましたが、結果はありませんでした。

.i ファイルのすべての #pragma ディレクティブをチェックして、gmp-vc100-mt-sgd.lib という名前が部分的に分割されていないことを確認したため、見つけることができませんでした。そこには絶対に提示されていません。

何か案は?

4

1 に答える 1

0

わかりました、わかりました。問題は、CGAL.libファイル内で見つけたこの/DEFAULTLIBにありました。

Visual Studioが.libファイルを構築していて、#pragma commentディレクティブに遭遇すると、このライブラリをリンクする方法についていくつかの指示が残ります。私が理解しているように、リンカとリンクするときに/DEFAULTLIBオプションを使用するようにリンカに指示するだけです。そして、リンカーは、未解決の外部がない場合でも、このライブラリを検索リストに追加しようとします。

そのため、プロジェクトをビルドするときにディレクティブを削除しようとしまし#pragma commentたが、CGALプロジェクト自体をビルドするときにディレクティブを削除する必要がありました。後者は問題なく動作します。

于 2012-02-27T16:15:41.927 に答える