厂商会提供静态连接的lib,如果够专业的话。

解决方案 »

  1.   

    厂商确实提供了一个与dll同名的lib
    那么请问具体应该怎样静态链接
      

  2.   

    你看看lib的大小,如果比DLL小很多,那就不是静态连接用的lib
      

  3.   

    lib为84K,dll为104K。
    lib比dll小就一定说明这个lib是只包含导出资源的吗?
      

  4.   

    我试了一下#pragma comment( lib,"libname.lib"),结果还是需要dll。
    这是静态链接的方法吗,还是测试的方法不应是这样的?
    或者有什么可以实现动态链接库->静态链接库的工具吗?
      

  5.   

    下了个DLL2LIB试了一下,倒是生成了一个245K的lib。
    但这个静态链接库在链接的时候通不过。
    请教高人有什么别的解决办法吗?
      

  6.   

    自己重写一个lib库, 换掉厂商的.
      

  7.   

    你必须知道DLL导出函数的定义
    并在你的程序中说明
      

  8.   

    有头文件就可以了,头文件中有函数原形的声明
    这样只需要动态导出函数就可以了  动态导出的话用depends是看不到那个依赖的dll的
      

  9.   

    动态加载dll
    例如:
    typedef int (WINAPI * MyFun)(HWND,LPCTSTR,LPCTSTR,UINT); 
        MyFun fun=NULL; 
        HINSTANCE hHandle; 
        hHandle=LoadLibrary("user32.dll"); 
        fun=(int (WINAPI *)(HWND,LPCTSTR,LPCTSTR,UINT))::GetProcAddress(hHandle,"MessageBoxA"); 
        if(fun!=NULL) 
        { 
            fun(NULL,"hahahahahahahaha","success :)",MB_OK); 
        } 
      

  10.   

    lib有两种,一种是内部有代码的,这种长度较长,比如C++运行库,它就没有DLL,直接提供LIB文件件,还有一种是生成DLL时附带生成的LIB,它内部不含代码,仅是为链接工作所做的。没有用,因为内部不含代码,你一定要用DLL,如果你不想DLL被别人用,可以将DLL作为一个资源放入EXE文件中。