C#调用dll

cloudfang 2011-03-10 10:57:21
原本程序在32位机器上编译,在32位和64位机器上运行均无问题。
最近修改程序,调用了一个C写的动态链接库(编译成32位的),结果在32位机器上运行没有问题,在64位win7操作系统下运行报错:"试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)"

求解!
...全文
129 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
bbb332 2011-03-10
  • 打赏
  • 举报
回复
原因:程序集之间的通讯要么全是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

110,530

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧