C ++ функции в качестве параметров - PullRequest
0 голосов
/ 10 марта 2012

У меня есть DLL, содержащая код C ++, который отлично работает в Visual C #.Когда я создаю fucton в C ++ DLL, он появляется в Visual C #, и я вызываю его даже с параметрами.Однако, когда я добавляю указатель на функцию в качестве одного из параметров в C ++ DLL, он не может быть найден в Visual C #.

C ++ Функции:

 int TEST(int *func) // Works fine and shows up in visual C#.
 { 
     return 0;
 } 

int TEST2(int (*func)()) // Works, however doesn't show up in Visual C#
{
     return 0;
}

ОБНОВЛЕНИЕ:

Когда я вызываю TEST2 из C #, я получаю ошибку: 'TEST2' is not supported by the language

Ответы [ 2 ]

2 голосов
/ 10 марта 2012

Аргумент указателя функции должен быть объявлен так:

int TEST2(int (*func)()) { /*...*/ }
0 голосов
/ 10 марта 2012

Я почти уверен, что вам нужно заключить в скобки *func, чтобы сообщить компилятору, что * func - это указатель на функцию int (*func)() вместо int *(*func)(), которая у вас есть.

...