帮帮我!!!第一次注册,第一次发帖,无法加载 DLL 本帖最后由 raincylee 于 2009-08-11 11:21:08 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 帮你顶一下,慢慢来吧我有个问题调试了两天刚刚找到错误了但是这个错误可能会导致整个软件的思路改变~~~~(>_<)~~~~ 很郁闷啊 rapi.dll 是不是这个dll损坏了检查下 网上下个试试有时候重建个项目把代码贴过去或许有用..^_^ ` UP下 c:\windows\system32\rapi.dll文件。是一个同步软件安装的目录。这个dll,是非托管的程序集dll,不能引用到bin目录下。我加到bin目录中。但还是不可以。 非托管的Dll不能这么用,晕! 非托管dll用DllImport调用如[DllImport("kernel32")]public extern static int LoadLibrary(string lpLibFileName); RAPI myRapi = new RAPI();//出错位置 非托管中的Dll不能这么使用的, 要先判断你的RAPI是什么类型, 再采用相应的做法.如果是一般的方法调用, 就应该像[DllImport("rapi.dll")]static public extern void RapiMethod(); 这样使用.而如果rapi.dll中的是一个窗体模块, 则: public delegate string CallWindow(int iSign, string strInParameter, ref string strOutParameter); [DllImport("Kernel32")] public static extern int GetProcAddress(int handle, String funcname); [DllImport("Kernel32")] public static extern int LoadLibrary(String funcname); [DllImport("Kernel32")] public static extern int FreeLibrary(int handle); private static Delegate GetAddress(int dllModule, string functionname, Type t) { int addr = GetProcAddress(dllModule, functionname); if (addr == 0) return null; else return Marshal.GetDelegateForFunctionPointer(new IntPtr(addr), t); } //调用部分代码 huser32 = LoadLibrary("DllWindow.dll"); //你的动态库文件名 CallWindow CallDlg = (CallWindow)GetAddress(huser32, "CallWindow", typeof(CallWindow)); CallDlg( 6, strSign, ref str ); //调用窗体其它的就不知道了. 项目-添加w引用- 选中你的DLL 我的项目是B/S的代码.程序在调试是完全正确的.发布后用IIS浏览就出上面的错误了 这样也试了.在调试时LoadLibrary()可以返回一个值.但发布到IIS中,返回值为0.还是不可以用. 引用 12 楼 qqiuzaihui 的回复:RAPI myRapi = new RAPI();//出错位置非托管中的Dll不能这么使用的, 要先判断你的RAPI是什么类型, 再采用相应的做法.如果是一般的方法调用, 就应该像[DllImport("rapi.dll")]static public extern void RapiMethod(); 这样使用.而如果rapi.dll中的是一个窗体模块, 则:C# codepublicdelegatestring CallWindow(int iSign,string strInParameter,refstring strOutParameter); [DllImport("Kernel32")]publicstaticexternint GetProcAddress(int handle, String funcname); [DllImport("Kernel32")]publicstaticexternint LoadLibrary(String funcname); [DllImport("Kernel32")]publicstaticexternint FreeLibrary(int handle);privatestatic Delegate GetAddress(int dllModule,string functionname, Type t) {int addr= GetProcAddress(dllModule, functionname);if (addr==0)returnnull;elsereturn Marshal.GetDelegateForFunctionPointer(new IntPtr(addr), t); }//调用部分代码 huser32= LoadLibrary("DllWindow.dll");//你的动态库文件名 CallWindow CallDlg= (CallWindow)GetAddress(huser32,"CallWindow",typeof(CallWindow)); CallDlg(6, strSign,ref str );//调用窗体其它的就不知道了.谢谢呀!但我的项目是B/S的代码.程序在调试是完全正确的.发布后用IIS浏览就出上面的错误了 将属于该数据集中的表移到该数据集中的方法 有没有人做过相机的眼部合焦软件 如何使用 VS2008 自带的打包程序? 请问一个JS的问题?? 很难的, 我做了一上午没做出来 请问C#中,怎么用代码执行(backspace)键。就是用代码激发键盘的(backspace)键事件。 取得程序集中的版本信息问题,请帮助! help me 怎样在安装程序中发布.netFramework 字符串问题! 急!!关于vs.net正式版使用beta2版的问题!来着有分 C# 内存映射 为什么我打包的安装程序运行后是打开桌面
我有个问题调试了两天刚刚找到错误了
但是这个错误可能会导致整个软件的思路改变~~~~(>_<)~~~~
很郁闷啊
检查下 网上下个试试
有时候重建个项目把代码贴过去或许有用..
^_^ ` UP下
[DllImport("kernel32")]
public extern static int LoadLibrary(string lpLibFileName);
[DllImport("rapi.dll")]
static public extern void RapiMethod(); 这样使用.而如果rapi.dll中的是一个窗体模块, 则:
public delegate string CallWindow(int iSign, string strInParameter, ref string strOutParameter);
[DllImport("Kernel32")]
public static extern int GetProcAddress(int handle, String funcname);
[DllImport("Kernel32")]
public static extern int LoadLibrary(String funcname);
[DllImport("Kernel32")]
public static extern int FreeLibrary(int handle); private static Delegate GetAddress(int dllModule, string functionname, Type t)
{
int addr = GetProcAddress(dllModule, functionname);
if (addr == 0)
return null;
else
return Marshal.GetDelegateForFunctionPointer(new IntPtr(addr), t);
} //调用部分代码
huser32 = LoadLibrary("DllWindow.dll"); //你的动态库文件名
CallWindow CallDlg = (CallWindow)GetAddress(huser32, "CallWindow", typeof(CallWindow));
CallDlg( 6, strSign, ref str ); //调用窗体其它的就不知道了.
这样也试了.在调试时LoadLibrary()可以返回一个值.但发布到IIS中,返回值为0.还是不可以用.
RAPI myRapi = new RAPI();//出错位置非托管中的Dll不能这么使用的, 要先判断你的RAPI是什么类型, 再采用相应的做法.如果是一般的方法调用, 就应该像
[DllImport("rapi.dll")]
static public extern void RapiMethod(); 这样使用.而如果rapi.dll中的是一个窗体模块, 则:
C# codepublicdelegatestring CallWindow(int iSign,string strInParameter,refstring strOutParameter);
[DllImport("Kernel32")]publicstaticexternint GetProcAddress(int handle, String funcname);
[DllImport("Kernel32")]publicstaticexternint LoadLibrary(String funcname);
[DllImport("Kernel32")]publicstaticexternint FreeLibrary(int handle);privatestatic Delegate GetAddress(int dllModule,string functionname, Type t)
{int addr= GetProcAddress(dllModule, functionname);if (addr==0)returnnull;elsereturn Marshal.GetDelegateForFunctionPointer(new IntPtr(addr), t);
}//调用部分代码 huser32= LoadLibrary("DllWindow.dll");//你的动态库文件名 CallWindow CallDlg= (CallWindow)GetAddress(huser32,"CallWindow",typeof(CallWindow));
CallDlg(6, strSign,ref str );//调用窗体其它的就不知道了.
谢谢呀!但我的项目是B/S的代码.程序在调试是完全正确的.发布后用IIS浏览就出上面的错误了