当前位置:编程学习 > C#/ASP.NET >>

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#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,