C# 调用MFC打包的时DLL出错,求大侠们帮忙

C# 调用MFC封装的时DLL出错,求大侠们帮忙!
首先是其它公司给的一个DLL API,需要使用我们这边想用在asp.net上供web使用。

他们提供的DLL需要使用MFC重新封装一个DLL,然后才能在.net中调用。

封装DLL以后,使用C#客户端程序可以正常使用。

但使用.net web程序就出错。

C# 调用MFC打包的时DLL出错,求大侠们帮忙

在网上也已经搜过了好多解决办法,但使用在我这上面都不好用。

设置dll的权限,将dll复制到system32文件夹下,复制所有dll到bin文件夹下。都不好用

求大侠帮忙
------解决思路----------------------
客户端程序可以正常使用, web程序就出错
是在同一台机器上吗?
------解决思路----------------------
mfc相关的dll文件都全吗,相应版本的vc运行库,mfc运行库
------解决思路----------------------
先确定环境是否一致
比如机器是32位还是64位
winform工程编译成32位还是64位
web工程又编译成多少位
------解决思路----------------------
引用:
Quote: 引用:

先确定环境是否一致
比如机器是32位还是64位
winform工程编译成32位还是64位
web工程又编译成多少位

机器的环境是64位的。  winform编译成的是32位的,web编译成的只有any的选项。
重新封装的dll也应该是32位的,都是默认的设置

web解决方案里添加个类库项目,编译成x86,然后用它去引用dll,而web引用类库项目
三层架构不就是这么干的吗
否则web项目以64位运行,当然无法加载32位的dll
------解决思路----------------------
如果你的web项目里本身就有BLL层和DAL层
用BLL层去引用dll
而不是某个页面直接去引用dll
------解决思路----------------------
首先你先确定你到底是要在服务器上执行他,还是要在客户端执行他

呵呵,90%向我问这个问题滴人,经过了解他实际是想做ActivceX在客户端执行,而不是你现在这样通过iis在服务器端运行
------解决思路----------------------
引用:
我是要在服务器上假设IIS,然后用户在网站上使用功能,然后.net的程序根据用户想要的东西根据这个API去请求,得到返回的数据后在显示给用户。


如果是这样你无需在用MFC封装。你需要按下面步骤来
1.询问对方这个东西是标准dll,还是ActiveX,然后用工具检查这个dll必须第3方依赖项(如果对方直接告诉你就好,不知道可以使用专用工具查询dll的依赖项)
2.如果是标准DLL,需要把东西放到bin里面,然后需要临时注册一下dll查找路径,这个你可以google“ C# p/invoke” 以及“win32api 注册dll查找路径”
3.如果是ActivceX,你需要先注册他,然后直接在程序里使用com引用(发布后也必须在服务器上注册这个com)

4.最后一步是权限问题,无论是标准dll,还是Activcex,你都需要把iis那个站设置为可执行,同时需要对目录进行权限(NTFS下)设置(需要把networkservice用户组设置为完全操控),另外如果是Activcex有可能还需要设置DCom+的权限