1

マネージ C++ dll にリンクする必要があるいくつかのアンマネージ C++ で記述された lib ファイルがあります。
次に、このマネージ C++ の関数を C# アプリケーションから呼び出す必要があります。

最初のステップは問題ありません - Managed C++ dll が作成されました。必要な関数がエクスポートされていることを ildasm で確認できます。ただし、C# で記述したテスト アプリからこの関数を呼び出そうとすると、次のように表示されます。

タイプ 'System.IO.FileLoadException' の未処理の例外が不明なモジュールで発生しました。
{MyManagedCPP.dll} によってインポートされたプロシージャをロードできませんでした。

このメッセージは VS2010 から送信されます。
簡単な実験を行いました - Managed C++ dll のすべての lib ファイルから依存関係を削除し、再構築しました。
この変更で問題ありません。アプリが起動し、C# テスト アプリから Managed C++ dll の関数を呼び出すことができます。

dll が lib ファイルと静的にリンクしている場合、マネージ C++ 関数を呼び出すことは設計上不可能ですか? 技術制限?または、いくつかの回避策がありますか?

ありがとう

4

1 に答える 1