2) This is a linker error. I suspect this is something to do with not correctly linking dynamically with the shared library, but I don't know much about how this works on Linux, so I'll leave that to others to answer.
You cannot create an object of the type A with new since the constructor is not defined within your program.
Therefore you have defined the creatorFunction. You need to search in the loaded library for the function createA. Then use that function pointer (if found) to create an object of the type A.
It looks like that's the whole point of that exercise.