Как взаимодействовать между 32-битными и 64-битными приложениями - PullRequest
0 голосов
/ 16 мая 2018

Я занимаюсь разработкой и применением в Matlab, который использует внешние 32-битные библиотеки для решения конкретной задачи, которая часто вызывается и требует быстрого ответа. Эти библиотеки доступны только в 32-битной версии. Поскольку последние версии Matlab являются только 64-битными, мне нужно сохранить разработку всего приложения в устаревшей версии Matlab. Я ищу способы преодолеть это ограничение и имел в виду два.

Сначала я проверил способы вызова 32-битных библиотек из 64-битного Matlab, но мне сказали, что это либо невозможно, либо требует сложных разработок интерфейса, которые я не могу допустить.

Затем я подумал о том, чтобы разделить свое приложение на два, одно в 32-битном Matlab, которое использует 32 библиотеки, а другое - для всех остальных функций в 64-битном Matlab. Мне нужно поделиться данными между ними, всего несколькими цифрами, но это происходит часто, и мне нужен быстрый ответ (<1 секунда). </p>

Я пытался использовать текстовый файл, где оба приложения читают и пишут. Основное приложение будет менять там число, а другое приложение будет постоянно (например, каждые 0,1 с) проверять это значение в текстовом файле, чтобы знать, когда оно должно начаться.

Это решение работает, но мне интересно, есть ли более эффективный способ сделать это, по крайней мере, чтобы избежать такого частого доступа к текстовому файлу на жестком диске, который может ограничить производительность машины и даже повлиять на долговечность. Может быть, что-то, что хранится только в оперативной памяти?

Есть предложения? Заранее спасибо!

1 Ответ

0 голосов
/ 18 мая 2018

Самый быстрый способ обмена данными между двумя приложениями разной битности - это использование именованных каналов. Смотри https://msdn.microsoft.com/en-us/library/windows/desktop/aa365590.

Трубный сервер вызывает функцию API CreateNamedPipe. Клиент может открыть канал, как и любой другой файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...