Вопрос

Я не так хорош в 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 *

Спасибо,

Это было полезно?

Решение

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

.

или

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

Использование: [dllimport ("xxx.dll")] xxx.dll компилируется c ++

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

Другие советы

Есть несколько способов призвать в родной код из C #.Самый простой, вероятно, использовать P/Invoke. Скажите, что ваша функция похожа:

extern "C" int nGetSomeThing(void);
.

И он скомпилирован в файл yourdllname.dll, вы можете использовать P / Invoke, чтобы напрямую вызовел неуправляемый код следующим образом из C # CODE:

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 / Библиотека / AA288468% 28VS.71% 29.aspx .

Если у вас много функций со сложными подписями, вы, вероятно, должны перейти на слой взаимодействия в C ++ / CLI. Обратитесь: http://www.codeProject.com/articles/19354/quick-c-cli-loarn-c-clible-less-than-10-minutes

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

#ifdef __cplusplus
.

extern "C" {

endif

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

ifdef __cplusplus

}

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top