假如你需要在mainfrm.cpp调用dll中的void display()函数
      在mainfrm.h中加上extern "C" __declspec(dllimport) void display();
      找到你的dll中定义(.h)和实现(.cpp)的地方,在前面加上extern "C" __declspec(dllimport)
      即extern "C" __declspec(dllimport)void display()
      把你先前生成的“项目名.dll”和“项目名.lib”文件考到你第二个项目的debug目录或release目录下。
      ok了
      

解决方案 »

  1.   

    extern "C" __declspec(dllimport)
    是什么意思??
      

  2.   

    extern "C" __declspec(dllimport)起什么作用?
      

  3.   

    对不起,贴错了
    在mainfrm.h中加上extern "C" __declspec(dllimport) void display();
          找到你的dll中定义(.h)和实现(.cpp)的地方,在前面加上extern "C" __declspec(dllexport)
          即extern "C" __declspec(dllexport) void display()
          把你先前生成的“项目名.dll”和“项目名.lib”文件考到你第二个项目的debug目录或release目录下
          dllimport是导出函数,dllexport是导入函数,你可以这样理解,具体到MSDN里查
      

  4.   

    有没有列子让我看看?[email protected]
      

  5.   

    《Visual C++6技术内幕》里面第22章讲的不是很详细吗?你可以去看看嘛!
      

  6.   

    去看看vcexp.126.com,那里有很详细的介绍,在编程经验里
      

  7.   

    to:HoverInthesky
    我照你的做了,编译时出错:
    usedllDlg.obj : error LNK2001: unresolved external symbol __imp__display
    Debug/usedll.exe : fatal error LNK1120: 1 unresolved 
    为什么?
    有知道的请帮帮忙!!!!!!!!
      

  8.   

    比较稳妥的方法是用
    HINSTANCE hInst = LoadLibrary("KERNEL32.DLL"); 
    if(hInst) 
    {            
    typedef DWORD (WINAPI *MYFUNC)(DWORD,DWORD);          
    MYFUNC RegisterServiceProcessFun = NULL;     
    RegisterServiceProcessFun = (MYFUNC)GetProcAddress(hInst, "RegisterServiceProcess");
    if(RegisterServiceProcessFun)     
    {             
    RegisterServiceProcessFun(GetCurrentProcessId(),1);     
    }     
    FreeLibrary(hInst); 
    }
    这样作应该是可以的.
      

  9.   

    KERNEL32.DLL换成你自己的DLL,照你自己的函数格式,声明函数指针(还是指针函数,我也搞不清)
    RegisterServiceProcess指的是你DLL库中的函数名称.你可以把它换成你自己的函数.