DFP*_*DFP 1 c# migration 64-bit dllimport
我正在尝试在Win7 x64计算机上安装并运行32位应用程序.该应用程序是作为Win32应用程序构建的.它在32位平台上运行良好.在x64机器上,它在Programs(x86)目录中正确安装并运行正常,直到我调用32位dll.那时我得到错误的格式错误(0x8007000b),表明它正在尝试加载错误位数的dll.实际上,它试图从System32目录加载64位dll而不是SystemWOW64目录中的32位版本.
由dll供应商提供的另一个32位应用程序正确运行,它确实从SystemWOW64目录加载32位dll.我没有他们的应用程序的源来看他们如何访问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);
}
Run Code Online (Sandbox Code Playgroud)
强制您的.exe以32位模式运行.Project + Properties,Build选项卡,Platform Target = x86.
避免对项目的平台设置感到困惑,它实际上不必与实际设置相匹配.这是Project + Properties,Build选项卡,Platform Target.那里有点乱.
| 归档时间: |
|
| 查看次数: |
8435 次 |
| 最近记录: |