Совместное использование переменной между C # и C

Я видел несколько ответов почти на один и тот же вопрос, но не было кода на C #, который бы помог мне понять.

У меня есть файл C ++ .DLL, введенный в память. Хотя эта DLL просто получает информацию из приложения, а также получает информацию из C # .exe.

Информация C # exe будет меняться каждую секунду, в то время как информация C ++ будет меняться только один или два раза.

Как я могу создать общую переменную между двумя запущенными приложениями, и как я могу читать / писать в нее?

Спасибо!

0

Решение

Если вы хотите создать надежное решение, вы должны использовать следующее:

  1. Вызовы из C # в функции C ++. Сохраняйте типы параметров как можно более простыми. Любой поток C # может сделать эти вызовы.
  2. Запустите свои собственные потоки C ++, которые читают / изменяют только данные C ++ и вызывают только методы и функции C ++.
  3. Используйте объекты ядра Windows для синхронизации и других подобных вещей. Хорошо, когда одна сторона сигнализирует о событии, а другая ждет его.

Возможны другие типы взаимодействия, но я бы не рекомендовал их использовать. Эти дополнительные типы не являются простыми и не очень четко определены, содержат предостережения и т. Д. 3 вышеупомянутых метода позволяют создавать сложные приложения.

Для вызова функции C ++ добавьте в свою сборку:

[DllImport("User32.dll")]
static extern Boolean MessageBeep(UInt32 beepType);

Это говорит о том, что User32 имеет и точку входа MessageBeep что ты хочешь позвонить. После этого вы можете использовать его как любую другую функцию:

MessageBeep(0);

Аналогичным образом вы можете позвонить GetProcAddress или любая другая точка входа в вашу собственную DLL.

1

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

Я буду использовать именованный канал, чтобы два процесса могли легко общаться друг с другом! (Сервер C # и клиент C ++)

Спасибо всем за помощь!

0

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