C ++ dllは、Win32を使用してシリアルポートとの間でデータの読み取りと書き込みを行っています。C#アプリケーションでそのデータが必要です。C#で記述された他のdllと同じようにdllを参照し、それをインポートして、その中のメソッドを呼び出すだけの場合ですか?それとも私は何か違うことをする必要がありますか?
質問する
96 次
2 に答える
1
このDLLがCOMライブラリでない場合は、PInvokeを使用する必要があります
基本的に、DLLによってエクスポートされるすべての関数は、必要な構文を使用して定義する必要があります。これは、wininet.dllから関数InternetGetConnectedStateにアクセスするために必要な宣言の例です。
[DllImport("wininet.dll")]
private extern static bool InternetGetConnectedState( out int Description, int ReservedValue ) ;
その後、この方法でC#コードから関数を呼び出すことができます。
public static bool IsConnectedToInternet( )
{
try
{
int Desc;
return InternetGetConnectedState(out Desc, 0);
}
catch
{
return false;
}
}
もちろん、DLLはアプリケーションから見える必要があります(同じフォルダまたはパス)
于 2012-04-12T21:23:28.730 に答える
1
探している検索用語はPInvokeです。
基本的に、外部C ++実装を参照するC#クラスのメソッドを宣言する必要があります。
このようなもの(MSDNサンプルから):
class PlatformInvokeTest
{
[DllImport("msvcrt.dll")]
public static extern int puts(string c);
[DllImport("msvcrt.dll")]
internal static extern int _flushall();
public static void Main()
{
puts("Test");
_flushall();
}
}
于 2012-04-12T21:24:27.250 に答える