小弟在使用一个动态链接库时,只能静态编译链接。使用viewdll工具察看导出函数也可以看到有很多函数,但动态调用时模块虽然能够正确加载,但得不到任何函数入口地址

解决方案 »

  1.   

    静态编译链接需要*.lib
    动态加载用LoadLibraryh和GetProcAddress
      

  2.   

    导出时候尝试使用“extern "c"”标识,试试看行不。
      

  3.   

    跟类型说明有关系吗?不太懂.GetProcAddress得到的函数地址都是NULL,为什么啊
      

  4.   

    HINSTANCE hInst;
    hInst=LoadLibrary("Dll3.dll");
    typedef int (/*_stdcall*/ *ADDPROC)(int a,int b);
    //ADDPROC Add=(ADDPROC)GetProcAddress(hInst,"?add@@YAHHH@Z");
    ADDPROC Add=(ADDPROC)GetProcAddress(hInst,MAKEINTRESOURCE(1));
    if(!Add)
    {
    MessageBox("获取函数地址失败!");
    return;
    }
    CString str;
    str.Format("5+3=%d",Add(5,3));
    MessageBox(str);
    FreeLibrary(hInst);
    也许对你有帮助,最后用函数指针调用函数
      

  5.   

    谢谢楼上达人,小弟通过viewdll查得函数的入口偏移地址,然后加上dll动态加载地址后正好是该函数的入口地址,等试过楼上的方法后再来结贴