I guess I know the answer to #1. You can just define a julia function that does the operations to create a new symbol in the Julia execution environment, create a c-callable function pointer to it, and then call some entry point in the dll, passing that pointer.