Хорошо, чтобы ответить на ваш последний вопрос:
Может ли ошибочное объявление вызовов метода C ++ в c # привести к этой ошибке?
Нет, я не верю, что это может привести к ошибочному объявлению метода C ++, что может привести к ряду причин - от корректно выполняющейся функции до генерируемого исключения взаимодействия, однако я не верю, что это исключение будет брошено - это специфично для проблемы загрузки DLL.
Вы должны убедиться, что процесс, пытающийся загрузить эту dll, является на самом деле 32-битным процессом, каким-то образом получив идентификатор процесса (например, перехватив и зарегистрировав исключение), а затем зарегистрировавшись диспетчер задач. Если этот процесс на самом деле является 64-разрядным, возможно, вы что-то неправильно настроили.
Вам также следует убедиться, что dll, который вы пытаетесь загрузить (и все его зависимости), на самом деле 32-битный - я полагаю, что у вас возникнет аналогичная проблема, если вы попытаетесь загрузить 64-битный dll в 32-битный процесс. Вы должны иметь возможность использовать Dependency Walker (универсальный очень полезный инструмент), чтобы проверить это.