Вызов функции C # из C ++? - PullRequest
       7

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

1 голос
/ 14 августа 2011

Я пишу приложение в monotouch, которое также использует библиотеку C ++, поэтому я использовал p / inoke для вызова функций C ++ из C # для выполнения различных задач.Однако есть несколько сценариев, в которых я хотел бы, чтобы код C ++ вместо этого вызывал функции C #.

Так что-то вроде:

void CPlusPlusFunction(Pointer* stuff)
{
    //do stuff

    CSharpFunction(*stuff);
}

Возможно ли это, и если да, то как мне это сделатьЭто?Возможно, вместо вызова функции можно было бы передать делегат C ++ для вызова, и если да, то как это будет работать?Все, что я действительно хочу сделать, это передать некоторую информацию в C # немедленно в тот момент в функции.

Спасибо за любую помощь!

Ответы [ 2 ]

3 голосов
/ 14 августа 2011

Да, вы можете.Однако компилятор AOT, используемый для кода MonoTouch, скомпилированного для устройств, должен знать о таком обратном вызове, чтобы он мог генерировать соответствующий код.Поэтому ваши обратные вызовы должны быть украшены атрибутом [MonoPInvokeCallback] .

http://developer.xamarin.com/guides/ios/advanced_topics/limitations/#Reverse_Callbacks

2 голосов
/ 14 августа 2011

Вы можете попросить C # экспортировать функции из общей библиотеки, как это могут делать нативные библиотеки.Кроме того, C # может преобразовывать делегаты в указатели функций той же сигнатуры, которые вы можете передавать в C ++.

...