没有.h文件。能自己做一个出来吗?具体实现详细步骤呢?

解决方案 »

  1.   

    在SETTING选项中link 中把LIB文件写进去
      

  2.   

    要找一个分析dll和lib的工具得到dll中函数得名字
    然后用LoadLibrary(),和GetProcAddress()
      

  3.   

    给你一个例子看一看!
    bool is = false;
    typedef bool(* FindRes)(UINT resid);
    HINSTANCE m_hLibrary;
    m_hLibrary = LoadLibrary("MISDLL.dll");
    if(m_hLibrary==NULL) 
    {
    MessageBox(NULL,"丢失MISDLL.dll动库!","错误",MB_OK|MB_ICONSTOP);
    return false;
    } FindRes lpproc;
    lpproc = (FindRes)GetProcAddress (m_hLibrary, "GetExist");
    if(lpproc != (FindRes)NULL)
    {
    is = (*lpproc)(resid);
    }
    FreeLibrary(m_hLibrary);
    return is;
      

  4.   

    静态连接用的是*.lib文件函数实现代码全在其中,加入工程包含.h即可,最终exe文件将包含.lib的代码
    动态连接用的是.dll文件生成的exe文件没有包含其调用dll函数的代码其中只有调用函数的入口地址,所以最终要将.dll一起发布
    动态连接分显示调用 就是LoadLibrary,GetProcAddress,FreeLibrary(你搞反了)来调用相应的函数,此时不需要*.lib 文件
    在vc生成dll同时会有个lib文件,它与静态连接的lib有些不同,此时的lib文件只是包含了在对应dll文件函数的入口地址而没有函数的实现代码,所以你将lib加入工程,只要相应dll存在,就可以直接调用,其实这时的lib文件就相当于LoadLibrary,GetProcAddress,函数,这就叫隐式连接
    因为它没有明确使用LoadLibrary,GetProcAddress函数来调用动态连接库,当然你要有.h文件,也就是函数原形其实没有.h也可以,就是你要知道函数类型,原形,自己定义一个就可以了,在把.lib包含进来。
    所谓的.h里定义的都是函数的原形,就想 LuckFox(小狐狸) 的例子中如果隐士调用
    则如下
    .h
    bool GetExist(UINT resid);
    然后把include .h  把.lib 包含进来
    注意这个GetExist必须在.lib中有。
      

  5.   

    有个dll2lib软件,能自动生成lib和.h
      

  6.   

    首先想办法知道函数格式,自己写个头文件,然后
    #inclue "yourheader.h"
    #pragma comment(lib,"youlibname")