Сохранять состояние в dll между последующими вызовами из приложения C ++ - PullRequest
0 голосов
/ 09 января 2012

Я явно использую DLL в своем приложении, возможно ли сохранить состояние в этой DLL между последовательными обращениями к ней?Мои попытки использовать глобальные пока не увенчались успехом.

Должен ли я использовать неявное связывание, чтобы это работало?

1 Ответ

1 голос
/ 09 января 2012

Тип ссылки здесь не должен влиять.Он просто определяет, когда загружается DLL и требуется ли она для запуска вашей программы.Например, при загрузке во время выполнения вы можете загружать библиотеки DLL, которых нет во время компиляции (например, плагины), и вы можете обрабатывать недостающие зависимости самостоятельно.При связывании во время компиляции вы просто получите сообщение об ошибке Windows, сообщающее, что отсутствует DLL.

Что касается выгрузки, у вас нет прямого контроля, если ваша DLL будет оставаться в памяти, поэтому возможно, что она выгруженамежду двумя разными программами.Кроме того, что вы на самом деле считаете "последовательные звонки"?Два звонка из одной программы?Два вызова из одной и той же программы происходят во время двух разных исполнений?Две программы работают одновременно?В зависимости от сценария вам может потребоваться некоторая общая память (или дисковое пространство) для фактической передачи данных.

Вы можете взглянуть на DllCanUnloadNow , чтобы сообщить Windows, готовы ли вы уже выгрузить, но в зависимости от вашего варианта использования это может быть не тот инструмент.

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