Эта ошибка означает, что вы пытаетесь загрузить 32-битную DLL в 64-битный процесс или 64-битную DLL в 32-битный процесс. В Windows разрядность DLL должна соответствовать разрядности процесса, чтобы он мог правильно загружаться.
Ваш родной DLL 32- или 64-разрядный? В настройках сборки проекта C # на какую платформу вы ориентируетесь? Если вы зайдете в свойства проекта C #, вы можете перейти на вкладку «Сборка» и изменить «целевой объект платформы» на нечто конкретное, например x86 или x64, в соответствии с платформой, для которой была создана ваша собственная DLL.
Другой альтернативой может быть создание встроенной библиотеки DLL, соответствующей платформе вашего приложения C #. Если платформа приложения C # - AnyCPU, то она будет работать как 32-разрядная в 32-разрядной Windows и 64-разрядная в 64-разрядной Windows. Из-за этого вам потребуется как 32-, так и 64-битная версия вашей нативной DLL.
Я бы порекомендовал установить платформу вашего приложения C # на что-то конкретное (x86, x64), а затем изменить платформу своей нативной библиотеки DLL на соответствующую.