thanks for the suggestion, after checking some of the existing code I at least have a bit better idea of where things stand. I don't know the details yet but I believe the issue is somehow connected to linking and swigs. In any case I found two possible solutions.
include the definition rather than a declaration
this bypasses the linker altogether and an instance of this can be seen in expj.h
unfortunately unless I am thinking of this wrong this can contribute to code bloat since you will have a copy of the function in each file which uses the header. in the case of expj the function is meant to be inline so I suppose it does not really matter.
place the function definition in a non-block.
this works even as a non class member function but only if I leave the generated class in the header and source. If I remove the class entirely I get a host of errors related to swigs. if it was not for that this would be a straightforward solution but I am not sure how I feel keeping a random empty class around just to get my function to link. the program is managing to link the function independent of the class so there must be some way to do it but I am not quite sure how yet.
well thanks for the input so far and sorry if that was a bit wordy.