Visual Studio 2010にアンマネージC++プロジェクトがあります。これは、ベンダーのboost、glut、および別のライブラリを使用しています。Visual Studio 2010のダイナミックで静的なリンクとデプロイ
もっと "dll-indepenendent"実行可能ファイルを作成できるようにプロジェクトをセットアップしました。すべてのブーストライブラリは静的にリンクされており、実行可能ファイルが存在するディレクトリにdllは必要ありません。
glutと同じことですが、私はglut32.dllの代わりに静的なglut32.libをリンクしましたが、問題はありません。
ランタイムライブラリ用にNON-dllバージョン、つまりマルチスレッドデバッグ(デバッグ構成用)とマルチスレッド化リリース構成を選択しました。
私が前に話していたベンダーは、2つの選択肢Vendor.libとVendor.dllを提供しています。
Vendor.libはリンカ - >追加の依存関係に追加されていますが、実行時には常にVendor.dllを実行可能ファイルの同じディレクトリに配置する必要があります。そうしないと、Vendorが見つからないため.dllライブラリ。
この問題をどのように解決すればよいですか?私はすべてのディレクトリに.dllファイルを入れないようにしたいと思います。
exeの同じディレクトリにdllを置いておきたいのですが、Visual StudioにアンマネージC++コンソールアプリケーションを展開する際のガイドラインは何ですか?
私はこの議論について多くの質問とページがあることを知っていますが、この点について私に明確なものはありません。
いくつかのアイデアですか?
これはMS特有のものではありません。 Linuxにもインポートライブラリがあります。 – rubenvb
Unixには、ライブラリ(.aファイル)と共有オブジェクト(.soファイル)の2種類の "ライブラリ"があります。ライブラリを提供しているベンダー(通常の意味で)は通常、両方を提供します。 .aファイルにリンクすると静的にリンクし、.soにリンクすると動的にリンクします。 Microsoftソリューションの問題点は、1)動的リンク用に2つの異なるファイルがあり、2)ファイルの1つに静的ライブラリと同じ名前が付いていることです。 –
あなたの答えをありがとう。おそらく私はこの話題で混乱している唯一の人ではないでしょう。つまり、ダイナミックライブラリが必要なときに作成されたものと静的ライブラリになることができるものの2種類の.libファイルがあります。私は別のVendor.libファイルを見つけられないので、私は最初のケースにいると思います...ありがとう! – linello