Опитвам се да инсталирам и стартирам 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-битовата версия?
Всякакви мисли се оценяват.
Благодаря, DP
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);
}