2016-04-06 6 views
0

私は大規模なシステム(10以上のEXEと50以上のDLL)で動作します。このシステム全体は、コンポーネントを.NETフレームワークに移行する2005年頃までC++で書かれていました。Visual Studio 2015がC++/CLIプロジェクトのスタティックライブラリをリンクしていません

個々のDLLプロジェクトをC++/CLIに切り替えて、従来の管理されていないAPIと新しい管理対象APIを同じDLLに提供することができれば、これは大きな努力を払います。

このアプローチは、最初に開始したときに機能しましたが、すぐ後に壊れました。 Visual Studioでは、アンマネージAPIを介して相互にリンクする2つのC++/CLIプロジェクトをサポートするようには見えません。

1つのプロジェクトのエクスポートライブラリをコンテンツとして別のプロジェクトに追加することができますか?それはプロジェクトの依存関係がすでに処理しているものです。

+0

静的ライブラリに* managed *コードをリンクすることはできません。リンカーは、CLRが行うはずのジョブを実行することはできません。マネージコードは実行時にバインドされます。/clrを有効にしてネイティブコードをコンパイルすると、このような問題が発生します。それはうまくいくが、両方の世界の最悪を生み出す。回避策は、コードを分割することです。静的ライブラリにネイティブコードを保存し、アセンブリ内のマネージコードを保持します。 –

+0

@Hansこれはツールチェーンがそれをうまく処理するビルドシステムの質問のようです –

答えて

-1

恐らく#pragma commentがネイティブヘッダーファイルで役立つでしょう。そのためには、生成されたインポートライブラリをライブラリ検索パスに追加できる共通領域に書き込むように設定された各プロジェクトが必要ですが、手動でlibファイルをリンカの入力として追加する必要がなくなります。また、個々のライブラリを1つのプロジェクトに2回ずつ追加するのではなく、各設定ごとに異なる検索パスを持つことができるため、リリースとデバッグライブラリのバージョンをより簡単に保つことができます。

関連する問題