support dynamic library