0

BorlandC++コードには次のメソッドがあります。

static bool UploadBitstream(void)
{
   //Some code Implementation
}

そして、私はそれをDLLに変換し、C#でアクセスしようとしています。

コードDLLを変換してC#で使用するために実行する必要のある手順は何ですか?

4

3 に答える 3

1

まず、メソッドがexternで定義されていることを確認する必要があります。次に、メソッド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;
}
于 2009-05-06T15:33:24.977 に答える
0

DLLをコンパイルしたら、それにアクセスするために.NETで行う必要があるのは、DLLImportプロパティを使用することだけです。

public class stuff
{
    [DLLImport("somedll.dll")]
    public static extern void UploadBitstream();
}

ポインタなどが必要な場合はさらに複雑になりますが、void関数の場合は非常に簡単です。

その関数を呼び出すと、dllはプログラムによってロードされ、プログラムが閉じられるまで解放されないことに注意してください。dllを動的にロードできますが、それははるかに複雑です。必要に応じてここで説明できます。

于 2009-05-06T14:21:47.737 に答える
0

用語に注意してください。
あなたの例では、UploadBitstreamはメソッドではなく関数です。
それが実際にクラスのメソッドである場合、BorlandでコンパイルされたDLLのクラスを使用することは非常に困難です。

コードが実際にはC++ではなくCである場合は、C++Builderを使用して単純なCスタイルの関数と互換性のあるDLLを作成できるはずです。

次のSOの質問を参照してください 。c++プログラムのdllを使用します。(borland c ++ Builderおよび一般的に) 互換性のあるDLLの作成にも適用されるさまざまなコンパイラ設定をリストします。

于 2009-05-06T23:29:17.513 に答える