trying to make a library "multiple definition of '#var'

essentially, you may declare functions (but not define them)

That is not true. It is possible to implement functions in a header file. I do it all the time for get/set type functions that set/get a private field's contents.