Ответ 1
Это почти всегда потому, что вы вызываете 32-битный код из 64-разрядной dll/exe и т.д. или 64-битную dll из 32-разрядной DLL. Что произойдет, если вы построите С# для x86? Он все равно будет работать на 64-битной версии.
Я разработал приложение С# Windows, которое также вызывает внутренние функции [импортированные из С++ DLL через DllImport()]
Мой код на С++ построен как .DLL в платформе Win32, тогда как мой С# построен как платформа "Любой процессор".
Когда я запускаю .EXE(С#) в моей тестовой машине, я сталкиваюсь с ошибкой как
была сделана попытка загрузить программу с неправильным форматом исключение из hresult 0x8007000B
Однако эта ошибка не возникает, если я устанавливаю VSS 2010 на моем компьютере, а затем запускаю EXE.
1) Причина этой ошибки? 2) почему ошибка не наблюдается при установке VSS?
Я использовал Win7 OS (64 бит) для сборки .EXE(С#) в платформе AnyCPU, которая, в свою очередь, зависит от DLL (С++ Dll, импортированной на С# с использованием DllImport), встроенной в Win32
Это почти всегда потому, что вы вызываете 32-битный код из 64-разрядной dll/exe и т.д. или 64-битную dll из 32-разрядной DLL. Что произойдет, если вы построите С# для x86? Он все равно будет работать на 64-битной версии.