日期:2014-05-19  浏览次数:20465 次

高分求教:.net调用C++DLL问题!会的请进来帮忙!
我现在在做一个BS系统。需要用.net(C#)调用一个C++的消息队列的DLL。
网上的方法我都试过了。但是还是老报错。
我的方法是:
我因为测试调用C++Dll专门建了个小项目(新建网站)
我将C++的DLL放到了bin目录下,同时也放到了system32目录下一份。
然后我在App_Code目录下建了个SysClass.cs的公共类,内容如下:
public   class   SysClass
{
public   SysClass()
{
//
//   TODO:   在此处添加构造函数逻辑
//
}
        [DllImport( "MQClient.dll ",   EntryPoint   =   "MQInit ",   CharSet   =   CharSet.Auto,   CallingConvention   =   CallingConvention.StdCall)]
        public   static   extern   bool   MQInit(string   szSerialNo);
}

然后再网页Default.aspx.cs中调用
string   szSerialNo   =   "common ";
SysClass.MQInit(szSerialNo);

但是老报错如下:

无法加载   DLL“MQClient.dll”:   找不到指定的模块。   (异常来自   HRESULT:0x8007007E)。

请问:为什么会加载不上???



------解决方案--------------------
App_Code下放dll试试
------解决方案--------------------
MQClient.dll用工具看看,函数名和参数。

软件名:depends.exe
------解决方案--------------------
放在app_code下就行吧

------解决方案--------------------
先注册一下MQClient.dll
------解决方案--------------------
可能是由于你的DLL是非托管的,前几天我也遇到这个问题,这里有个完美解决方案,楼主参考

http://mscenter.edu.cn/blog/gxisone/archive/2007/01/03/117877.html
------解决方案--------------------
philoo(小毛驴尥蹶子) ( ) 信誉:100 Blog 加为好友 2007-04-26 17:07:06 得分: 0


可能是由于你的DLL是非托管的,


这……肯定是非托管的。