MSVC: __declspec (dllexport) не содержит символов - PullRequest
1 голос
/ 23 сентября 2011

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

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

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

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

1 Ответ

1 голос
/ 23 сентября 2011

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

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

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

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

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

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

...