23:07
Эмбарго
Прототип функции в DLL-библиотеке об'явлен через __declspec(dllexplort). Тело функции в наличии. Но в выходной библиотеке функция отсутствует. GetProcAddress возвращает FALSE. Всякие DLL Viewer также не показывает данной функции. При этом другие добавленные функции экспортируются нормально. Компилятор/компоновщик ошибок не выдают.
В параметрах функции было что-то типа int (& param)[3][4][5] -- ссылка на многомерный массив. Я думал, из-за этого. Но смена типа этого параметра не помогла.
Кроме того, я думал на несовпадение названий функции при об'явлении, определении и получении адреса, но это тоже оказалось не так. Названия функции при об'явлении и определении совпадали. И ничего похожего на это название в списке экспорта исполняемого файла не было.
Наконец, я понял, в чём причина. Различался список параметров! В теле функции было на 1 параметр больше, чем в прототипе (почему -- отдельный вопрос). Поэтому компилятор думал, что это перегруженные версии функции -- у одной есть тело, но нет прототипа, а у другой есть прототип, но нет тела. Это совершенно легально. Вопрос только в том -- почему компоновщик не стал ругаться на функцию, которая явно об'явлена на экспорт, но фактически отсутствует?
В параметрах функции было что-то типа int (& param)[3][4][5] -- ссылка на многомерный массив. Я думал, из-за этого. Но смена типа этого параметра не помогла.
Кроме того, я думал на несовпадение названий функции при об'явлении, определении и получении адреса, но это тоже оказалось не так. Названия функции при об'явлении и определении совпадали. И ничего похожего на это название в списке экспорта исполняемого файла не было.
Наконец, я понял, в чём причина. Различался список параметров! В теле функции было на 1 параметр больше, чем в прототипе (почему -- отдельный вопрос). Поэтому компилятор думал, что это перегруженные версии функции -- у одной есть тело, но нет прототипа, а у другой есть прототип, но нет тела. Это совершенно легально. Вопрос только в том -- почему компоновщик не стал ругаться на функцию, которая явно об'явлена на экспорт, но фактически отсутствует?