LINUX.ORG.RU

коллизия внутри кода при вызове dlopen


0

1

Используются две динамические библиотеки.( libPLX9054.so, libLan150.so)

В программе происходит загрузка библиотеки посредством вызова dlopen. В загружаемой библиотеке так же происходит загрузка другой библиотеки опять же посредством вызова функции dlopen. В обоих библиотеках содержится строковая константа:

 char    InterfaceName[] = "IPLX9054"; // описана в библиотеке libPLX9054.so
 char    InterfaceName[] = "ILan150"; // описана в библиотеке libLan150.so
Т.е. очередность такая:

  • загрузка программой библиотеки libLan150.so
  • загрузка билиотекой libLan150.so библиотеки libPLX9054.so

Обнаружил, что при выполнении кода в libPLX9054.so InterfaceName[] = «ILan150» , a не «IPLX9054». Как такое может быть? dlopen вызывается с флагом RTLD_NOW


решил проблему добавив const :)

Однако, вопрос в силе. Почему происходит коллизия?

ikseg ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.