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
, Он не может быть экспортирован, потому что компилятор может попытаться оптимизировать его, вставив его.