Commit ee78865 produces link errors.
```
bindings.lib(@m..@sunreal@scoreuobject@suobject.nim.cpp.obj) : error LNK2005: "class UClass * __cdecl getClassByName(class FString)" (?getClassByName@@YAPEAVUClass@@VFString@@@Z) already defined in @m..@sPlugins@sNimForUE@ssrc@snimforue@sunreal@scoreuobject@suobject.nim.cpp.obj
bindings.lib(@m..@sunreal@scoreuobject@suobject.nim.cpp.obj) : error LNK2005: "class UScriptStruct * __cdecl getScriptStructByName(class FString)" (?getScriptStructByName@@YAPEAVUScriptStruct@@VFString@@@Z) already defined in @m..@sPlugins@sNimForUE@ssrc@snimforue@sunreal@scoreuobject@suobject.nim.cpp.obj
bindings.lib(@m..@sunreal@scoreuobject@suobject.nim.cpp.obj) : error LNK2005: "class UFunction * __cdecl getFunctionByNameWithPrefixes(class UClass *,class FString)" (?getFunctionByNameWithPrefixes@@YAPEAVUFunction@@PEAVUClass@@VFString@@@Z) already defined in @m..@sPlugins@sNimForUE@ssrc@snimforue@sunreal@scoreuobject@suobject.nim.cpp.obj
```
In `uobject.nim` all the routines are either `importcpp` or `exportcpp` because the new ueCast doesn't have these pragmas we get this redefinition error.

If I put an `exportcpp` pragma on the `ueCast` I get a bunch of errors like:
```
D:\unreal-projects\_experiments\NueAuraGas\Plugins\NimForUE\.nimcache\gencppbindings\@muemeta.nim.cpp(281): error C2556: 'UFunction *ueCast(UObject *)': overloaded function differs only by return type from 'UInterface *ueCast(UObject *)'
D:\unreal-projects\_experiments\NueAuraGas\Plugins\NimForUE\.nimcache\gencppbindings\@muemeta.nim.cpp(280): note: see declaration of 'ueCast'
D:\unreal-projects\_experiments\NueAuraGas\Plugins\NimForUE\.nimcache\gencppbindings\@muemeta.nim.cpp(281): error C2371: 'ueCast': redefinition; different basic types
D:\unreal-projects\_experiments\NueAuraGas\Plugins\NimForUE\.nimcache\gencppbindings\@muemeta.nim.cpp(280): note: see declaration of 'ueCast'
D:\unreal-projects\_experiments\NueAuraGas\Plugins\NimForUE\.nimcache\gencppbindings\@muemeta.nim.cpp(282): error C2556: 'UEnum *ueCast(UObject *)': overloaded function differs only by return type from 'UInterface *ueCast(UObject *)'
```

If I split `ueCast` so we have one specific for interface casting and do an exportcpp on it we can get rid of the link errors, but do you have any other ideas to make the API work?

```nim
proc ueCast*[T:UObject](src:UObjectPtr) : ptr T {. importcpp:"Cast<'*0>(#)" .}

#proc ueCastInner[T:UObject](src:UObjectPtr) : ptr T {. importcpp:"Cast<'*0>(#)" .}

proc interfaceCast*[T:UInterface](src:UObjectPtr) : ptr T {.exportcpp.} =
  #when T is UInterface:
  if doesImplementInterface(src.getClass(), T.staticClass):
    cast[ptr T](src)
  else:
    nil
```
