首先是其它公司给的一个DLL API,需要使用我们这边想用在asp.net上供web使用。
他们提供的DLL需要使用MFC重新封装一个DLL,然后才能在.net中调用。
封装DLL以后,使用C#客户端程序可以正常使用。
但使用.net web程序就出错。
在网上也已经搜过了好多解决办法,但使用在我这上面都不好用。
设置dll的权限,将dll复制到system32文件夹下,复制所有dll到bin文件夹下。都不好用
求大侠帮忙
IIS权限的问题。
我在使用vs调试的时候就报错了,而且我对所有使用的dll都设置了everyone的所有权限。 也是不好用的。
你这个 mt4apimfc.dll 是 COM 组件吗?
mt4apimfc.dll 相关的依赖项是否都在 d:/dll 目录下?
我也不太清楚是不是COM组件,我对c++的不太了解,就是使用MFC写的一个DLL文件。
我用depends查看依赖的DLL没有找不到的。只是有一个提示:Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.
也不太懂。 求助
@小沣: 封装DLL以后,使用C#客户端程序可以正常使用。—— 也是在你部署 WEB 程序的那台机器上运行的结果吗?
@Launcher: 是的! 同一台机器,客户端程序没有问题,web程序就不行。
@小沣: 1、测试时,C#客户端程序也是放在 D:\dll\ 目录下吗?(你给的路径中的斜杠是你自己写的吗?)
2、你的 mt4apimfc.dll 中是如何调用“其它公司给的一个DLL API”的?
@Launcher: 斜杠是我自己写的,给正斜杠和反斜杠效果都是一样的。
其它公司一共给了我一个DLL文件和一个头文件。我将头文件添加到项目中,然后在我项目的cpp文件引用,写好对应的函数,在函数中调用他们提供头文件中的函数。生成dll在给C#用
@小沣: 我没猜错的话,你的 mt4apimfc.dll 是 32 位的,而 Asp.Net 默认是 64 位,在 IIS 中将应用程序池修改为 32 位。
@Launcher: mt4apimfc.dll应该是32位的, 因为我调用64位的程序就报错,asp.net不太清楚,但我的电脑是64位的,服务器也是64位的。我改一下试试。 asp.net能改默认32位吗?
@小沣: 应用程序池-〉高级设置-〉启用 32 位应用程序
@Launcher: 谢谢你,我先试一试,有问题再问!
你IIS设置的是64位吗?