cpp アプリケーション内で使用するために変更された .c および .h ファイルがあります。
#ifdef __cplusplus
extern "C"{
#endif
先行行。そこで定義された関数をac#プログラム内で使用できるかどうか、またどのように使用できるか疑問に思っていました。たぶん、そのコードの dll を作成する必要がありますか?
あなたたちはそれを理解していないようです-彼はdllを持っていません.彼はc ++ソースファイルを持っています:
2 つのオプションがあります
C++ コードを C# に変換し、アプリケーションに直接組み込む
C++ コンパイラを使用してソース ファイルから dll を作成し、PInvoke を使用してそれにアクセスします。
dll を作成するために C++ コードを変更する必要があるか、C# からアクセスできるようにする必要があるかどうかについては、完全なコードを投稿しない限り知る方法はありません。
MSDNから取った簡単な例を次に示します。
using System;
using System.Runtime.InteropServices;
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();
}
}
これは、既存のコードを .DLL にコンパイルする意思があることを前提としています。
MSDN ブログの明確な例を次に示します。IntPtr を使用して DLL パスをロードできます。