Вчера я помогал другу скомпилировать примеры Intel MKL Java. У нас были проблемы с «неразрешенными внешними объектами», хотя все выглядело нормально (в соответствии с файлами примеров / makefile).
Затем я использовал dumpbin Visual Studio, чтобы проверить, присутствуют ли в библиотеке неразрешенные функции. Одним из примеров неразрешенного внешнего объекта была функция с именем _cblas_sgemm
. При выводе символов из библиотеки (dumpbin /symbols mkl_core.lib
) мне удалось найти только функцию cblas_sgemm
в библиотеке, которая пропустила префикс _
. Затем я обнаружил, что функция на самом деле называлась только cblas_sgemm, и что компилятор добавил префикс _
, как часть правила искажения имени.
TL; DR
Итак, мои вопросы:
- Отображает ли
dumpbin
полное имя точки входа в библиотеке? Или по какой-то причине оно на самом деле «деформирует» имя?
- Библиотека поставлялась с установочным пакетом, поэтому я не знаю, какой компилятор использовался для его компиляции. Разные компиляторы выдают разные имена?
Я не думаю, что понял это правильно; Возможно, я делаю что-то не так в другом месте, но я хочу быть уверенным в этих двух вопросах.
Подобный вопрос без ответов: здесь .