Как вызвать C ++ Native Properment из C #

Я не так хорош в C ++
но,..
Например у меня есть это

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

И метод, который я хочу импортировать, как это

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

Как я могу позвонить из C #?

Рядом,
Я думаю, что моя проблема с типом параметра (const char *) на стороне C ++, что является равным типом в C # для этого! const char *

Спасибо,

0

Решение

Как вызвать C ++ код из C #

или же

Вызов функции C ++ из C #

Использование: [DllImport («xxx.dll»)] xxx.dll компилируется C ++

Надеюсь, это поможет.

2

Другие решения

Есть несколько способов вызова нативного кода из 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

1

Я только что добавил проверку __cplusplus, и это сработало!

#ifdef __cplusplus

extern «C» {

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

}

0
По вопросам рекламы [email protected]