2012-04-09 3 views
1

В основном я спрашиваю, как реализовать тот же поток, что и объяснение here.IPC между C# app, через собственную C++ DLL, в другое приложение, использующее DLL со встроенным Lua?

Я хочу, чтобы мой C# поставлял обратные вызовы в родную C++ DLL, которую я написал.

Я хочу, чтобы эта DLL должен быть загружен двигателем Lua, который был встроен в другое приложение,
MUSHClient (клиент MUD/телнет, со встроенной Lua), через package.loadlib("native.dll", "someInitFunction");.

Затем в MUSHClient Я хочу написать сценарии, вызывающие функции, открытые DLL. Я хочу, чтобы эти функции вызывали функцию callback/делегат, предоставленную моим приложением C#.

Как это сделать?
Я знаю, как экспортировать функции в свою DLL, я не знаю, как разделить обратный вызов между процессами.

+1

Если у вас есть два процесса, вам нужна какая-то форма IPC. Какой IPC вы хотите использовать? –

+0

Возможно ли использовать общую память и совместно использовать указатель функции для callback/delegate? – Zolomon

+1

Нет, это невозможно сделать. –

ответ

1

Вам нужно какое-то межпроцессное общение (IPC).

Я бы рекомендовал Именованные трубы.

Here является хорошим примером реализации именованной трубы в C# & C++.

+0

Как использовать именованные каналы в C++ (не C++/CLI)? – Zolomon

+0

Например. посмотрите [эту тему] (http://stackoverflow.com/questions/2640642/c-implementing-named-pipes-using-the-win32-api) – TheVoidSeeker

Смежные вопросы