The general approach with resolving classes from C libraries is to have a base class definition that is linked to both the main application and the library and to have a subclass of that class defined in the library along with a factory method that instantiates object of the subclass and casts them to the base class. The approach is identical to using plugins. If all of the code is yours to design and implement, I suggest you indeed use the plugin approach (using QPluginLoader). Otherwise you'll have to resolve all the symbols you need from the library using QLibrary which can be pain in the... neck.