register_function requer um ponto de entrada dll e você não pode gerar isso no código gerenciado.
Você pode escrever uma DLL wrapper C++/CLi para ter pontos de entrada nativos para seu código gerenciado, mas se você está apenas começando do zero, por que não apenas escrever uma dll nativa simples.