1

底にたどり着くことができないように見える、やや奇妙な問題があります。しばらくの間、多くの異なるバージョンの Visual Studio を使用してビルドされ、現在のバージョンの Visual Studio に定期的に更新されている、ほとんどアンマネージドの C++ アプリケーションがあります。

私は今、次の問題に遭遇しました:

  • VS2010 では、既存のソリューションに 2 つの新しいプロジェクトを追加しました。どちらの新しいプロジェクトも DLL であり、一方はプレーンなアンマネージ C++ でビルドされ、一方は C++ と C++/CLI を組み合わせてビルドされているため、CLR サポート (/clr) を使用してビルドされています。2 番目の C++/CLI DLL は、システムの他のいくつかのコンポーネントで使用する必要があります。
  • [プロパティ] -> [共通プロパティ] -> [フレームワークと参照] を使用して、2 つの新しい DLL を依存関係として 3 つ目の DLL に追加します。3 番目の DLL は .NET について何も知らず、純粋なネイティブのアンマネージ C++ で実装されています。新しい DLL は依存関係の設定に正しく表示され、新しい参照はソリューションのビルド順序が影響を受ける (正しい) という意味で機能しますが、何らかの理由で、プレーン ネイティブ C++ DLL のインポート ライブラリのみが両方のライブラリを参照する DLL のリンカー コマンド ライン。2 番目の混合ライブラリはインポート ライブラリを生成しますが、VS2010 はインポート ライブラリをリンカー コマンド ラインに追加しないため、いくつかの未解決の外部シンボルが発生することが予想されます。
  • ライブラリの他のすべての設定が同じであるため、この動作をトリガーするように見える 1 つの設定は、共通言語ランタイム サポートを使用して DLL をビルドすることです。

現在、この問題の回避策があります - インポート ライブラリを手動の依存関係として追加するだけです - しかし、他の誰かがこの問題に遭遇したかどうか、また回避策なしでこの機能を期待どおりに動作させる方法があるかどうか疑問に思っていましたか?

4

0 に答える 0