Разве это не работает? Должно. То, что вы не экспортируете класс явно, не означает, что логика не в двоичном коде. Символы просто не видны никому, импортирующему этот класс.
Ваше решение должно это сделать. Вы получаете ошибки связывания или что?
РЕДАКТИРОВАТЬ: я только что видел, как вы включили заголовок для Foo
только в одном случае. Вам не нужно этого делать:
#ifdef BUILD_DLL
# define EXTERNAL __declspec(dllexport)
#else
# define EXTERNAL __declspec(dllimport)
#endif
#include "Foo.h"
class EXTERNAL Bar: public Foo
{
public:
Bar();
bool Read(...);
bool Write(...);
~Bar();
};
Таким образом, вы не можете использовать Foo
в другом модуле, так как он не экспортируется, но вы можете использовать и объявить Bar
.