У меня есть код GFORTRAN
, который должен загрузить несколько экземпляров одной общей библиотеки ( .so ) в другой путь к папке.Эта общая библиотека находится в PASCAL и содержит открытые переменные и вызовы dlopen (с использованием функции LoadLibrary) для загрузки внешних .so .
. В моем коде GFORTRAN
я пробовал RTLD_LAZY=1
и RTLD_NOW=2
в dlopen
.Он загружает .so , но я подозреваю, что переменные являются общими (если я запускаю каждый экземпляр в каждом потоке, используя openMP
, я могу видеть, что значения, которые я установил для переменной в потоке 1, перезаписываютсяв теме 2).
В качестве альтернативы я попытался dlmopen
с LM_ID_BASE
, основываясь на вопросе , но с той же проблемой при совместном использовании переменных.Когда я попробовал LM_ID_BASE
для первого экземпляра и LM_ID_NEWLM
для второго экземпляра, я получил symbol lookup error: /home/selva/libclusol.so: undefined symbol: memset, version GLIBC_2.2.5
Любое предложение?
Примечание: My .so создается с использованием FPC
и имеет много открытых переменных, loadlibrary
вызовов (внутренне использует dlopen
) и несколько экспортированных функций, которые я использую вGFORTRAN