Вопрос наверное не совсем в тему, но какой-то своей частью он касается Qt
Вобщем пишу я дллку, из которой мне надо экспортить UDT то есть user defined type. Конкретно в моем случае это QIcon.
1. Компиляция с помощью msvc.
пытаюсь экспортировать ф-цию таким образом:
extern "C" QIcon CSISPluginIcon() {
return QIcon(c_DirectDB_plugin_icon);
}
msvc мне намекает, что с помощью extern "C" не нужно экспортить UDT.
тогда я переписываю таким образом:
CSIS_EXPORT QIcon CSISPluginIcon() {
return QIcon(c_DirectDB_plugin_icon);
}
где CSIS_EXPORT объявлен в заголовке:
#ifdef CSIS_PLUGIN
#define CSIS_EXPORT __declspec(dllexport)
#else
#define CSIS_EXPORT __declspec(dllimport)
#endif
все отлично компилится, и что самое интересное - работает.
2. Компиляция с помощью гцц.
gcc говорит, что типа символ CSISPluginIcon не найден, поэтому экспортировать его скорее всего не удатся, и библиотеку не собирает.
Я переделываю все обратно, т.е. к виду с extern "C", и тогда все нормально компилится, и опять же, что самое интересное - работает.
Мне конечно не в лом при переходе от компилера к компилеру переписывать все это дело в 5ти файлах, но это не по джедайски. Собсно вопрос, как правильно делать? Может Qt позволяет кросс-компиляторно-платформенно этот вопрос решить?