No, recompiling Godot isn't needed, but you do need the Godot source to compile the gdnative wrapper part.
The tutorial to have a button show a string from a dll is pages upon pages long.
In Julia, I can set a white pixel in the top left corner with:
ccall((:setPixel, "cimgc"), Cvoid, (UInt32, UInt32, Float32, Float32, Float32), 0, 0, 1.0, 1.0, 1.0)
That loads my cimgc.dll (if not already loaded) and calls the setPixel function in it.
The Nim version:
proc setPixel(x:uint32, y:uint32, r:float32, g:float32, b:float32): void {.importc, dynlib: "./cimgc.dll".}
setPixel(0, 0, 1.0, 1.0, 1.0)
That exposes the setPixel from cimgc.dll as a Nim function I can call like normal.
Python:
cimgc = WinDLL(so_file)
cimgc.setPixel(0, 0, 1.0, 1.0, 1.0)
Of course GDScript isn't intended for the same use cases as languages like Julia or Python.