Well, the plugin will need to resolve symbols for all code external to it, e.g. Qt's libraries. This of course also applies to your project libraries.

If you pass an instance of one of your classes to the plugin, it needs to have the header for compilation and the symbols for linking.

My guess is that you satisfy the former by having plugin and application code in the same tree, maybe as sub projects.

If that is true then you need to put all host API classes, or at least their interfaces, into a library that is linked by both plugins and application, just like both your plugin and your application linking with Qt.

Cheers,
_

P.S.: you can also get symbol hiding on Linux if you prefer fixing there. Look for QMAKE_CXXFLAGS_HIDESYMS in the qmake.conf files of your Qt installation