Динамическое связывание - PullRequest
0 голосов
/ 12 апреля 2010

Как я могу проверить, как динамическое связывание достигается в моей системе? И какие ограничения накладываются на динамически связанный код. Какие требования предъявляются к коду для его динамической связи?

Ответы [ 2 ]

2 голосов
/ 12 апреля 2010

Похоже, что вы спрашиваете, есть ли какой-нибудь портативный способ проверить возможности вашей ОС, независимо от того, какая ОС.

Единственное, что можно сказать, это «читать документацию».

Для операционных систем, о которых я знаю, Windows использует библиотеки DLL для динамического связывания, а Unix - файлы .so. Оба предоставляют возможность вручную или автоматически загружать точки входа в библиотеку.

1 голос
/ 24 января 2017

Динамическое связывание выполняется во время выполнения операционной системой,

  • , следовательно, имеет следующие ограничения:

    1. ОС зависит.

      например. Windows .dll не может быть напрямую связана с Linux, вам нужно построить его там и сгенерировать .so и наоборот.

    2. Dll зависят от платформы:

      например. DLL-библиотека X64 не может быть связана с проектом Win32.

    3. Они также зависят от конфигурации:

      например. Если у вас есть релиз dll, вы не можете связать его с другим проектом какая конфигурация установлена ​​на Debug.

    4. Это также зависит от соглашения о вызовах:

      например если ваш .dll проект имеет соглашение о вызовах, установленное на __cdecl и и вызываемый устанавливает для своего соглашения о вызовах значение __stdcall, это может привести к таким проблемам, как исключения времени выполнения.

...