Я пытаюсь использовать CAN-устройство через USB, которое поставляется с родной DLL, которую нужно обернуть классом .NET C# (исходный код, предоставленный поставщиком) который входит в свой проект. Их примеры приложений нацелены на .NET 2.0, где мое приложение предназначено для .NET 4.0. Я могу использовать код в своих типовых приложениях и отладки все просто отлично, однако, когда я пытаюсь отлаживать, я получаю BadImageFormatException:BadImageFormatException, возникающий при загрузке родной DLL в .NET 4.0
System.TypeInitializationException: The type initializer for 'TotalPhase.KomodoApi' threw an exception. ---> System.BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
только различия между их кодом и моя, как представляется, что их код - это приложение, созданное для .NET 2.0, и (в настоящее время) мой код работает как модульный тест MSTest в .NET 4.0. Оба решения нацелены на AnyCPU. Я работаю на 64-разрядной установке Windows 7 Ultimate. Даже переход от AnyCPU к x86 не имел никакого значения. Как я могу загрузить эту родную DLL в проект AnyCPU?
Вы пытались перенаправить свое приложение на .Net 4.0? Можете ли вы показать, как вы взаимодействуете с родной DLL? – vossad01
Какая целевая платформа скомпилирована родной dll? x64 или x32? Вы можете использовать, чтобы узнать. Или DumpBin/Headers xxx.dll –
+1 для предложения DumpBin, что помогает. Я ошибочно выбрал неправильную DLL из своего SDK. Я скопировал 64-битную DLL, когда планировал использовать 32-разрядную DLL. Эта программа должна запускаться на 32-битных клиентах. –