Cuda dll init error


I have a cuda shared library with init() and cleanup() functions. Since I am using linux and gcc, I marked those functions with attribute((constructor)) and attribute((destructor)), respectively. Now the compiler gives me error:

internal error: can’t generate code for non empty constructors or destructors on device

Is there any way around it other than using a flag and manually call init code on first dll function invocation and relying on the application to call the cleanup code in the dll?

All suggestions are appreciated.