0

cpp アプリケーション内で使用するために変更された .c および .h ファイルがあります。

#ifdef __cplusplus
       extern "C"{
#endif 

先行行。そこで定義された関数をac#プログラム内で使用できるかどうか、またどのように使用できるか疑問に思っていました。たぶん、そのコードの dll を作成する必要がありますか?

4

3 に答える 3

1

あなたたちはそれを理解していないようです-彼はdllを持っていません.彼はc ++ソースファイルを持っています:

2 つのオプションがあります

  1. C++ コードを C# に変換し、アプリケーションに直接組み込む

  2. C++ コンパイラを使用してソース ファイルから dll を作成し、PInvoke を使用してそれにアクセスします。

dll を作成するために C++ コードを変更する必要があるか、C# からアクセスできるようにする必要があるかどうかについては、完全なコードを投稿しない限り知る方法はありません。

于 2012-09-13T10:33:03.297 に答える
1

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 にコンパイルする意思があることを前提としています。

于 2012-09-13T08:13:10.987 に答える
0

MSDN ブログの明確な例を次に示します。IntPtr を使用して DLL パスをロードできます。

http://blogs.msdn.com/b/jonathanswift/archive/2006/10/03/dynamically-calling-an-unmanaged-dll-from-.net-_2800_c_23002900_.aspx

于 2012-09-13T08:24:14.833 に答える