HINSTANCE  hInst;
hInst = LoadLibrary("ftd2xx.dll");
typedef  u_long  (_stdcall *OPEN)(int deviceNumber,PVOID *pHandle);
OPEN  ft_open = (OPEN)GetProcAddress(hInst,"FT_Open");while(ft_open(0,&ft_Handle) != FT_OK)                   
{
sprintf(szStateInfo, " Open USB Device... ");

}怎么编译完没错,然后把ftd2xx.dll删掉却还能运行???
每次都会出Open USB Device... 
这个dll是怎么回事?

解决方案 »

  1.   


    其他地方(比如系统目录)还有ftd2xx.dll
    要想只使用你的路径中的dll,使用绝对路径
      

  2.   

    ftd2xx.dll,你为什么要删除掉他呢? 
      

  3.   

    hInst = LoadLibrary("ftd2xx.dll"); 改个名字看看。如果改其它名字后就不行了,那肯定是其它在方还有这个DLL。检查所有的环境变量path路径
      

  4.   

    赞同这你可以单步跟踪下,你把那个删除了,如果hInst 获得的句柄非空,那肯定有存在("ftd2xx.dll"); 
      

  5.   

    没有检测 hInst 和 fp_open 是否有效。如果打开DLL失败会返回NULL
      

  6.   

    >>怎么编译完没错,然后把ftd2xx.dll删掉却还能运行??? 
    >>每次都会出Open USB Device... 
    >>这个dll是怎么回事? + 你的程序出现的问题是其他方面的问题,不是dll使用方法本身的问题。直接从DLL调用函数可参考下面的链接。
    + ftd2xx.dll删掉却还能运行? 这是系统文件,杀掉了还会自动生出了。
    ----------------------------------------------------------------
    直接从DLL调用函数(VC++)
      

  7.   

    没有dll能调用成功那是绝对不可能的,唯一可能的就是在其它系统路径还存在这个DLL.