Мне показалось, что это работает, я не использовал Interop, но все еще вызывал управляемую функцию C ++ из C Sharp. Однако управляемая функция C ++ называется неуправляемым кодом, поэтому она выполняет то же самое, что и Interop.
В любом случае, в функции C ++, которая была вызвана из c-sharp, я использовал этот код:
(anyPointerType*) pointer = (anyPointertype*) myIntPtr.ToPointer();