У меня есть приложение Qt, которое использует Q_DECL_EXPORT
, чтобы пометить определенные типы данных и функции моего основного исполняемого файла как экспортированные. Аналогично, когда я компилирую свои плагины, я помечаю те же символы с помощью Q_DECL_IMPORT
, чтобы импортировать их.
Это прекрасно работает на Linux. Все, что мне нужно сделать, это скомпилировать с -rdynamic
, и все идет хорошо. Visual Studio 2008 мне тоже понравился, он с радостью создает файл .lib
для моего основного исполняемого файла, я просто связываю свои плагины с этим .lib
, и теперь он знает, что эти символы будут найдены в основном приложении, когда Плагин загружен.
С другой стороны, MingW оказывается не таким уж и веселым. Основное приложение, как и ожидалось, компилируется без проблем. Но все плагины не работают во время соединения из-за ошибки «неопределенная ссылка», конечно, начиная с _imp__
. Есть ли способ заставить MingW игнорировать эти ошибки, поскольку я знаю, что они будут исправлены при правильной загрузке?
Я пробовал флаги, такие как -Wl,--unresolved-symbols=ignore-all
и -Wl,--allow-shlib-undefined
, но безрезультатно.
Я хотел бы добавить MingW в список поддерживаемых компиляторов, но я не могу заставить эту единственную часть работать. Конечно, я не первый, кто хочет иметь плагин, который импортирует символы из приложения, в которое он загружается!