Название: extern "C" и __declspec(dllexport) Отправлено: QCasper от Август 03, 2006, 13:22 Вопрос наверное не совсем в тему, но какой-то своей частью он касается Qt :)
Вобщем пишу я дллку, из которой мне надо экспортить UDT то есть user defined type. Конкретно в моем случае это QIcon. 1. Компиляция с помощью msvc. пытаюсь экспортировать ф-цию таким образом: Код: extern "C" QIcon CSISPluginIcon() { msvc мне намекает, что с помощью extern "C" не нужно экспортить UDT. тогда я переписываю таким образом: Код: CSIS_EXPORT QIcon CSISPluginIcon() { где CSIS_EXPORT объявлен в заголовке: Код: #ifdef CSIS_PLUGIN все отлично компилится, и что самое интересное - работает. 2. Компиляция с помощью гцц. gcc говорит, что типа символ CSISPluginIcon не найден, поэтому экспортировать его скорее всего не удатся, и библиотеку не собирает. Я переделываю все обратно, т.е. к виду с extern "C", и тогда все нормально компилится, и опять же, что самое интересное - работает. Мне конечно не в лом при переходе от компилера к компилеру переписывать все это дело в 5ти файлах, но это не по джедайски. Собсно вопрос, как правильно делать? Может Qt позволяет кросс-компиляторно-платформенно этот вопрос решить? Название: extern "C" и __declspec(dllexport) Отправлено: Sergeich от Август 04, 2006, 00:03 Код: #ifdef Q_WS_WIN Название: extern "C" и __declspec(dllexport) Отправлено: QCasper от Август 04, 2006, 09:25 Цитата: "Sergeich" Код: #ifdef Q_WS_WIN а что такое Q_WS_WIN? Название: extern "C" и __declspec(dllexport) Отправлено: Sergeich от Август 04, 2006, 10:29 Для каждой из платформ, Qt определяет один из следующих символов: Q_WS_WIN, Q_WS_X11, Q_WS_MAC или Q_WS_QWS. Перед обращением к любому из них, исходный код приложения должен подключить хотя бы один заголовочный файл библиотеки.
("Разработка графического интерфейса с помощью библиотеки Qt3" Jasmin Blanchette, Mark Summerfield") Название: extern "C" и __declspec(dllexport) Отправлено: QCasper от Август 04, 2006, 11:20 Цитата: "Sergeich" Для каждой из платформ, Qt определяет один из следующих символов: Q_WS_WIN, Q_WS_X11, Q_WS_MAC или Q_WS_QWS. Перед обращением к любому из них, исходный код приложения должен подключить хотя бы один заголовочный файл библиотеки. ("Разработка графического интерфейса с помощью библиотеки Qt3" Jasmin Blanchette, Mark Summerfield") я что-то плохо улавливаю связь, с моим случаем. У меня не две разных платформы, а два разных компилятора. А платформа виндовzz. Название: extern "C" и __declspec(dllexport) Отправлено: Sergeich от Август 04, 2006, 13:36 Тады добавь еще
Код: #ifdef Q_WS_WIN |