Прежде всего, я очень благодарен всем за вашу помощь.
Благодаря многочисленным идеям и подсказкам, которые вы мне дали, я смог наконец решить эту проблему. Ваши советы помогли мне усомниться в том, что я воспринимал как должное.
Краткий ответ на мою проблему: проблема заключалась в том, что моя библиотека C ++ использовала старую версию библиотеки C. Эта старая версия пропустила 4-й аргумент. Как следствие, 4-й аргумент, очевидно, никогда не менялся.
Мне немного стыдно, когда я понял, что это проблема. Тем не менее, я ошибся из-за того, что мой код компилировался нормально. Это было связано с тем, что библиотека C ++ скомпилирована с правильной версией C lib, но во время выполнения использовала старую версию, статически связанную с другой библиотекой, которую я использовал.
C++ Lib (M) ---> dyn C++ lib (N) ---> C lib (P) v.1.0
|
------> C lib (P) v.1.1
(N) - это динамическая библиотека, которая статически связана с (P) версией 1.0.
Компилятор принял вызов функции (M) с 4 аргументами, потому что я связывался с (P) версией 1.1, но во время выполнения использовал старую версию (P).
Не стесняйтесь редактировать этот ответ или вопрос или попросить меня сделать это.