C#からC ++ネイティブの対象と呼ぶ方法
-
21-12-2019 - |
質問
私は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 *)であると思います。char char *
ありがとう、
他のヒント
C#からネイティブコードを呼び出す方法はいくつかあります。最も簡単なことは、おそらくP/Invoke
を使用することです。
あなたの関数は次のようなものです:
extern "C" int nGetSomeThing(void);
.
とyourdllname.dllファイルにコンパイルされている場合は、C#コードから次のようにして、P / Invokeを使用してアンマネージコードに直接呼び出します。
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-cli-learn-c-cli-inless-than-10-10minutes
__cplusplusチェックを追加してうまくいった!
#ifdef __cplusplus
.
extern "c" {
Endif
GETSomthing_API char* GetAgentId(const char* szConfigPath, char *szA, int ASize);
.
ifdef __cplusplus
}
所属していません StackOverflow