Я пытаюсь установить и запустить 32-разрядное приложение на компьютере с Win7 x64.Приложение построено как приложение Win32.Он отлично работает на 32-битных платформах.На компьютере x64 он корректно устанавливается в каталог Programs (x86) и работает нормально, пока я не вызову 32-битную DLL.В то время я получаю неправильную ошибку формата (0x8007000b), указывающую, что он пытается загрузить dll неправильной битности.Действительно, он пытается загрузить 64-битную DLL из каталога System32, а не 32-битную версию в каталоге SystemWOW64.
Другое 32-битное приложение, предоставленное поставщиком dll, работает правильно и загружает 32-битную dll из каталога SystemWOW64.У меня нет источника для их приложения, чтобы увидеть, как они обращаются к DLL.
Я использую функцию DllImport, как показано ниже, для доступа к DLL.Есть ли способ декорировать вызовы DllImport, чтобы заставить его загрузить 32-битную версию?
Любые мысли приветствуются.
Спасибо, ДП
public static class Micronas
{
[DllImport(@"UAC2.DLL")]
public static extern short UacBuildDeviceList(uint uFlags);
[DllImport(@"UAC2.DLL")]
public static extern short UacGetNumberOfDevices();
[DllImport(@"UAC2.DLL")]
public static extern uint UacGetFirstDevice();
[DllImport(@"UAC2.DLL")]
public static extern uint UacGetNextDevice(uint handle);
[DllImport(@"UAC2.DLL")]
public static extern uint UacSetXDFP(uint handle, short adr, uint data);
[DllImport(@"UAC2.DLL")]
public unsafe static extern uint UacGetXDFP(uint handle, short adr, IntPtr data);
}