| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Лишние экспортируемые функции в DLL |
| Автор: RinOSpro 21.11.2011, 10:18 | ||
| Всем привет! Решил перенести DLL с Borland C++ на Qt, все получилось кроме того, что раньше из DLL я экспортировал 4 функции… а после перекомпиляции на Qt появилась целая туча функции которые мне не нужны. http://s1.ipicture.ru/uploads/20111121/D6XUXpes.png Компилировал как в Debug, так и в Release. Экспортирую так:
Как лечить? |
| Автор: borisbn 21.11.2011, 11:08 |
| Проблема никак не связана ни с Си++, ни с Qt, а связана с компилятором/линковщиком/настройками_IDE. У меня, например, Qt-шная dll-ка, экспортирующая одну ф-цию, реально только её и экспортирует. Я использую MSVC 2008. В общем, кури в сторону опций компиляции/линковки |
| Автор: bsa 21.11.2011, 11:58 |
| RinOSpro, вообще-то, extern "C" - это не экспорт функции. Это лишь сигнал компилятору о том, чтобы он не делал сложное имя функции. А экспорт - это http://msdn.microsoft.com/ru-ru/library/a90k134d(v=vs.90).aspx перед объявлением функции или класса. По умолчанию, линуксовый компилятор экспортирует все функции и переменные. Чтобы он этого не делал, добавляют специальный ключи (для GCC/mingw: -fvisibility=hidden -fvisibility-inlines-hidden). Так как Qt SDK по умолчанию поставляется с mingw, то компилятор там изначально из unix. Возможно, со всеми вытекающими. |
| Автор: RinOSpro 21.11.2011, 12:11 | ||
А где прописывать эти ключи компилятора? |
| Автор: bsa 21.11.2011, 12:20 |
| в настройках компилятора, на которые ссылался borisbn. почитай документацию. |
| Автор: RinOSpro 24.11.2011, 12:28 |
| Лишние экспорты сами исчезли когда я перед нужными функциями поставил: extern "C" __declspec(dllexport) |