C#调用dll
原本程序在32位机器上编译,在32位和64位机器上运行均无问题。最近修改程序,调用了一个C写的动态链接库(编译成32位的),结果在32位机器上运行没有问题,在64位win7操作系统下运行报错:"试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)"
求解!
--------------------编程问答-------------------- 原因:程序集之间的通讯要么全是64位环境下的,要么全是32位环境下的。不能混编访问。不然会出现“试图加载格式不正确的程序”的错误。
C/S:
运行C/S程序比较简单,直接在Build C/S程序的时候显式指定为X86(64位系统默认为X64)就可以了。
B/S:
运行B/S稍稍复杂点。在建立网站的时候,又分为两种情况。
A:建立的是“项目”:这个时候跟 C/S 的处理是一样。
B:建立的是“网站”:只需要修改IIS的配置就可以了。
i).“cscript %systemdrive%\inetpub\adminscripts\adsutil.vbs set w3svc/appPools/enable32bitapponwin64 1”
(enable32bitapponwin64为1代表可运行32位应用程序),该项可以通过 “命令行”执行一次。(此命令的作用是使IIS能够注册32位的.net FW)
ii).64位OP默认是在IIS下注册了64位的.net Framework的,因此还必须再注册一个32位的.net Framework
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727> aspnet_regiis.exe -i
补充:.NET技术 , C#