3

私の友人と私は、ネイティブ アセンブリ コードで .dll にコンパイルまたは変換し、C++ アプリケーションから呼び出したい C# ランタイム ライブラリをまとめました。

この種の取り組みに着手するのは、私たちが最初ではないのではないかと思いました。というわけで色々と調べてみた結果、以下のようになりました。

  1. C++ COM から C++CLI に移行する方法
  2. レガシ C++ ライブラリのマネージ C++ ラッパー
  3. アンマネージド (C++) コードのマネージド ラッパーの作成 - カスタム型/構造体
  4. C# を C++ に変換する方法
  5. http://bytes.com/topic/c-sharp/answers/268197-convert-c-form-c-net

ただし、これらのリンクはすべて、C++ コードを CLI または C# に移植する方法について説明しています。C++ アプリケーションから呼び出し可能なネイティブ アセンブリで、C# マネージ コードをスタンドアロン .dll ライブラリに移植する方法については言及されていません。

何かご意見は?

よろしくお願いします、

バルダー

4

2 に答える 2

1

基本的に、管理されたライブラリの周りに管理されていないラッパーが必要です。これは、より一般的な問題の反対です。

基本的な考え方は、アンマネージ エクスポート (ネイティブ C スタイル関数) を持つ C++ ライブラリを作成することですが、ライブラリと対話するために内部的にマネージ C++ を使用します。

管理されていないデータをレイヤー間でマーシャリングするのは難しい場合があることに注意してください。できれば、非常に基本的な型 (文字列と数値) のみを使用する必要があります。

また、クライアントには適切な .NET フレームワークがインストールされている必要があることに注意してください。ライブラリをラップしても、その要件を回避することはできません。

役立つリンクをいくつか次に示します。

アンマネージ C++ からの C# 関数の呼び出し

アンマネージド アプリケーションでのマネージド コードの使用

于 2013-09-11T13:55:19.907 に答える