首先动态库文件:fzyktclient.dll  另外还有几个文件,我都同时放在程序目录中BIN文件夹下,System32下也同时存放了
动态库函数如下:
int  ykt_readopencardno_local (char *pRegion, char *pDeptid,char *pDeptKey, char * pCardtype,char * pCardno, char *pWarnmsg,char *pErrmsg)我的C#调用代码:小弟初次接触相关技术,各位大哥帮我看看哪里语法有问题么?我用绝对路径也试过,也调不到,我不知道动态库是什么语言写的,好像是C++,具体不太清楚- -!我用DLL分析器分析过了,函数确实存在,再说了,如果是函数不存在的问题,它应该报找不到程序入口点的错误,可现在连文件都找不到- -!
    public class ClassCard
    {
        [DllImport("fzyktclient.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]        public static extern int ykt_opendevice(int nDeviceType, int nCom, int nBaud, string pRegion, string pWarnmsg, string pErrmsg);
    }我用C#调用该动态库,程序出错:无法加载 DLL“fzyktclient.dll”: 找不到指定的模块。 (异常
来自 HRESULT:0x8007007E)。。我在网上查了很多相关错误,有的说文件要放在System32下,或者放在程序执行文件一起,我都试过了,不行,急求高手解决,小弟万分感谢!!!

解决方案 »

  1.   

    你是说regsvr32 吗,我试过,不得行啊!LoadLibrary("E:\ReadCard\InsureReadCard\ReadCard\bin\Debug\fzyktclient.dll") 失败 - 找不到指定
    的模块。
      

  2.   

    1、查看fzyktclient.dll是不是非托管的dll,然后再查询其依赖模块是否都存在于当前目录下
    2、把你的C#编译二进制文件与此dll放在一个目录下,
      

  3.   

    Same plm ,I Have resolved it with that,  Thanks
      

  4.   

    这个怎么讲?如果是函数问题,我现在连他的DLL文件都访问不了- -,总共是7个文件,我试了其它的文件,有一个可以访问,但是找不到相应的函数入口点,我用DLL分析器看了下,找了其中一个函数调了下,可以调到,但这不是我想要的结果,他们社保提供的文档规范是调这个动态库文件
      

  5.   

    vs6.0有个工具Depends可以打开DLL,检查哪些模块在当前目录下找不到.
      

  6.   

    我用exescope分析过,我需要的函数存在。
      

  7.   

    有可能 dhnetsdk.dll 需要某个dll, 
    而那个dll不在标准路径下 
      

  8.   

    只是你需要的函数存在不行,还要保证dll依赖的库存在,用dependency分析一下吧,很好用的工具;
      

  9.   


    我用你推荐的工具分析了一下,缺少两个依赖文件,如下:
    DESALGO.DLL     打开文件出错。 系统找不到指定的文件。 (2).
    还有一个是msjava.dll,我从网上下载了一个,目前只有上面那个DLL找不到了,我想问一下,上面那个DLL
    是干什么,是系统文件吗?我在网上没有搜到不知道是不是加密文件之类的。。相关动态库提供商也没有给我提供。