MSVC: __declspec(dllexport) не содержит символов

У меня есть небольшая проблема, когда речь идет о написании DLL в MSVC (в частности, версия 2010 года). Моя программа состоит из основной части и библиотеки DLL. DLL содержит функцию, которая

__declspec(dllexport) int test_function(void) {
    return 42;
}

Файл компилируется с использованием проекта DLL (не используя предварительно скомпилированные заголовки, я выбрал пустой проект DLL). Теперь, когда я хочу перечислить экспортированные символы, используя dumpbin инструмент, test_function не указан в списке экспорта. Есть ли особая настройка, которая заставляет __declspec(dllexport) на самом деле экспортировать символы?

Любая помощь приветствуется. Спасибо!

1 ответ

Это должно сделать это. Если это весь код, проверьте следующее:

1) Вы на самом деле проверяете правильную DLL. Посмотрите на метку времени. Дважды проверьте местоположение и имя.

2) Вы компилируете указанный cpp (я так понимаю, ваше определение находится в файле cpp). Тот факт, что файл находится в каталоге, не означает, что он компилируется, убедитесь, что он добавлен в проект.

3) Убедитесь, что ваша функция не исключена из модуля компиляции директивами препроцессора.

Также поищите другие символы и постарайтесь увидеть, какие различия существуют между экспортируемыми символами и вашей функцией.

Если это не удается, вы должны двигаться __declspec(dllexport) на ваш .h файл и определение (без __declspec(dllexport)) на ваш .cpp, Он не может быть экспортирован, потому что компилятор может попытаться оптимизировать его, вставив его.

Другие вопросы по тегам