Проблема здесь в том, что совместимая реализация не должна помещать ваши классы в файл компиляции .cpp. Если компилятор может оптимизировать существование класса, при условии, что программа ведет себя так же без него, его можно исключить из выходного исполняемого файла.
C имеет стандартизированный двоичный интерфейс. Поэтому вы сможете узнать, что ваши функции экспортируются. Но в C ++ нет такого стандарта.