0

私はC ++が得意ではありませんが、..たとえば、私はこれを持っています

#define GETSomthing_API  __declspec(dllexport)
extern GETSomthing_API int nGetSomthing;

そして、このようにインポートしたいメソッド

GETSomthing_API  int GetSomthing(const char* szConfigPath, char *A, int B)

これを C# から呼び出すにはどうすればよいですか?

その上、私の問題は C++ 側のパラメーターの型 (const char* ) にあると思います。C# の同等の型は何ですか! const char*

ありがとう、

4

3 に答える 3

2

C# から C++ コードを呼び出す方法

また

C# から C++ 関数を呼び出す

使用: [DllImport("xxx.dll")] xxx.dll は C++ でコンパイルされます

この助けを願っています。

于 2014-01-09T08:13:46.230 に答える
1

C# からネイティブ コードを呼び出すには、いくつかの方法があります。最も簡単なのは、おそらく を使用することP/Invokeです。関数が次のようになっているとします。

extern "C" int nGetSomeThing(void);

YourDllName.dll ファイルにコンパイルされると、P/Invoke を使用して、C# コードから次の方法でアンマネージ コードを直接呼び出すことができます。

public static class interop
{
    [DllImport("YourDllName.dll")]
    static extern public int nGetSomeThing(void);
}
...
interop.nGetSomething() // call to the native function

参照: http://msdn.microsoft.com/en-us/library/aa288468%28VS.71%29.aspx

複雑なシグネチャを持つ関数が多数ある場合は、おそらく C++/CLI の相互運用レイヤーを使用する必要があります。参照: http://www.codeproject.com/Articles/19354/Quick-C-CLI-Learn-C-CLI-in-less-than-10-minutes

于 2014-01-09T09:13:13.703 に答える
0

__cplusplus チェックを追加したところ、うまくいきました!

#ifdef __cplusplus

extern "C" {

終了

GETSomthing_API char* GetAgentId(const char* szConfigPath, char *szA, int ASize);

ifdef __cplusplus

}

于 2014-01-12T14:11:59.340 に答える