首页 新闻 会员 周边

C# 调用MFC封装的时DLL出错,求大侠们帮忙!

0
悬赏园豆:100 [待解决问题]

首先是其它公司给的一个DLL API,需要使用我们这边想用在asp.net上供web使用。

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

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

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



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

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

求大侠帮忙

小沣的主页 小沣 | 初学一级 | 园豆:102
提问于:2014-11-07 15:07
< >
分享
所有回答(3)
0

IIS权限的问题。

Firen | 园豆:5385 (大侠五级) | 2014-11-07 15:18

我在使用vs调试的时候就报错了,而且我对所有使用的dll都设置了everyone的所有权限。  也是不好用的。

支持(0) 反对(0) 小沣 | 园豆:102 (初学一级) | 2014-11-07 15:19
0

你这个 mt4apimfc.dll 是 COM 组件吗?

mt4apimfc.dll 相关的依赖项是否都在 d:/dll 目录下?

Launcher | 园豆:45045 (高人七级) | 2014-11-07 16:23

我也不太清楚是不是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.

 

也不太懂。  求助

支持(0) 反对(0) 小沣 | 园豆:102 (初学一级) | 2014-11-07 16:26

@小沣: 封装DLL以后,使用C#客户端程序可以正常使用。—— 也是在你部署 WEB 程序的那台机器上运行的结果吗?

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2014-11-07 16:31

@Launcher: 是的!    同一台机器,客户端程序没有问题,web程序就不行。

支持(0) 反对(0) 小沣 | 园豆:102 (初学一级) | 2014-11-07 17:10

@小沣: 1、测试时,C#客户端程序也是放在 D:\dll\ 目录下吗?(你给的路径中的斜杠是你自己写的吗?)

2、你的 mt4apimfc.dll 中是如何调用“其它公司给的一个DLL API”的?

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2014-11-07 17:16

@Launcher: 斜杠是我自己写的,给正斜杠和反斜杠效果都是一样的。

其它公司一共给了我一个DLL文件和一个头文件。我将头文件添加到项目中,然后在我项目的cpp文件引用,写好对应的函数,在函数中调用他们提供头文件中的函数。生成dll在给C#用

支持(0) 反对(1) 小沣 | 园豆:102 (初学一级) | 2014-11-07 17:22

@小沣: 我没猜错的话,你的 mt4apimfc.dll 是 32 位的,而 Asp.Net 默认是 64  位,在 IIS 中将应用程序池修改为 32 位。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2014-11-07 17:26

@Launcher: mt4apimfc.dll应该是32位的,  因为我调用64位的程序就报错,asp.net不太清楚,但我的电脑是64位的,服务器也是64位的。我改一下试试。   asp.net能改默认32位吗?

支持(0) 反对(0) 小沣 | 园豆:102 (初学一级) | 2014-11-07 17:28

@小沣: 应用程序池-〉高级设置-〉启用 32 位应用程序

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2014-11-07 17:31

@Launcher: 谢谢你,我先试一试,有问题再问!  

支持(0) 反对(0) 小沣 | 园豆:102 (初学一级) | 2014-11-07 18:13
0

你IIS设置的是64位吗?

56180825 | 园豆:1756 (小虾三级) | 2014-11-08 21:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册