Borland C ++メソッドをC#に公開する
-
06-07-2019 - |
質問
Borland C ++コードには次のメソッドがあります
static bool UploadBitstream(void)
{
//Some code Implementation
}
そしてそれをDLLに変換し、C#でアクセスしようとしています。
コードDLLの変換に必要な手順 その後、C#で使用しますか?
解決
最初に、メソッドが外部で定義されていることを確認する必要があります。次に、メソッドstdcallまたはpascal呼び出し規約を宣言し、それらにdllexportをマークする必要があります。以下のコードリストを参照してください(これは私にとって古くからの記憶なので、最新のBorland C ++コンパイラに少しでもお気をつけください)。
// code.h
extern "C" {
#define FUNCTION __declspec(dllexport)
FUNCTION int __stdcall SomeFunction(int Value);
メイン
#include "code.h"
FUNCTION int __stdcall SomeFunction(int timesThree)
{
return timesThree * 3;
}
他のヒント
DLLをコンパイルしたら、DLLImportプロパティを使用するだけで、.NETでDLLにアクセスする必要があります。
public class stuff
{
[DLLImport("somedll.dll")]
public static extern void UploadBitstream();
}
ポインターまたはそのようなものが必要な場合はより複雑になりますが、void関数の場合は簡単です。
その関数を呼び出すと、dllがプログラムによってロードされ、プログラムが終了するまで解放されないことに注意してください。 DLLを動的にロードできますが、それははるかに複雑です。必要に応じてここで説明できます。
用語をご覧ください。
この例では、UploadBitstreamはメソッドではなく関数です。
クラスのメソッドである場合、Borlandコンパイル済みDLLのクラスを使用するのは非常に困難です。
コードが実際にはC ++ではなくCであれば、互換性のあるDLLを作成できるはずです。 C ++ Builderを使用した単純なCスタイル関数用。
次のSO質問を参照してください。 dllを使用するC ++プログラム。 (borland c ++ビルダーおよび一般) ここで、互換性のあるDLLの作成にも適用されるさまざまなコンパイラ設定をリストします。