2

C# API しかない商用サーバー アプリケーションに接続しようとしています。

そのための最善の方法は、C# DLL を作成することだと思います。これが私が行ったことです。ただし、サード パーティのツールを使用して DLL 内に含まれるメソッドを調べると、メソッドが表示されないように見えます。

StackOverflow を広範囲に検索したところ、次の提案がほとんどの人に有効であることがわかりましたが、この拡張機能を利用してもメソッドは表示されません。

したがって、この問題を解決するための別のアプローチを模索する時が来るかもしれません.1つのオプションはC#コンソールアプリケーションかもしれません.

何が最善のアプローチになるかについてのアイデアはありますか?

編集:

DUMPBIN プログラムを実行した後の出力は次のとおりです。

C:\Program Files (x86)\Microsoft Visual Studio 11.0>dumpbin /EXPORTS "C:\Users\mark\Desktop\Test.dll"

Dump of file C:\Users\mark\Desktop\Test.dll

File Type: DLL

  Summary

        2000 .reloc
        2000 .rsrc
        2000 .text
4

2 に答える 2

3

Basic+ に C コードを呼び出すオプションがある場合、Managed C++ でプロジェクトを作成するオプションがあります。

ここに画像の説明を入力

次のように装飾された関数をエクスポートします。

    extern "C"{
    __declspec(dllexport) void _cdecl MyFunction()
     {
          _MyImpl(); //see below wy this
      }
    }

void MyImpl()
{
    MyCSharpObj^ test = gcnew MyCSharpObj()...
    test->Methods(...
}

extern C で装飾された部分の外側では、マネージド コールとアンマネージド コールを安全に呼び出して混在させることができます。extern C ブロックの外に出る必要がある理由は、ほとんどすべてのマネージ関数にオーバーロードがあり、Extern C は呼び出しでもメソッドのオーバーロードをサポートしていないためです。.NET ライブラリに参照を追加するだけで c# を呼び出すことができます (実際にはすべてのコードをマネージ C++ で記述できますが、あまり使いやすくはありません)。

于 2013-09-19T10:26:46.717 に答える
1

Basic+ はRevelation Software製のようです。

このページには、次のように書かれています。

OpenInsight 9.1 リリース

この新しい OpenInsight リリースには、いくつかの .NET イノベーションが含まれていました。NetOI を使用すると、開発者は Microsoft Visual Studio ライセンスを使用してコーディングし、OpenInsight データベースに対して作業できます。RevDotNet 機能は、.NET API を呼び出し、OpenInsight アプリケーション内で .NET コントロールを使用する方法を提供します。

RevDotNet を使用して C# API を直接呼び出すことはできますか?

于 2013-09-19T10:34:22.083 に答える