有那为仁兄告诉我怎样调用自己DLL文件中的函数。

解决方案 »

  1.   

    By using the api function: LoadLibrary, GetProcAddress, FreeLibraryFor Example:
    // a function "MyFunction()" in your own dll file"C:\mydll.dll";HINSTANCE hInstance;
    typedef MYFUNCTION *(void);
    MYFUNCTION lpMyFunction;
    hInstance=LoadLibrary("C:\\mydll.dll");
    lpMyFunction=(MYFUNCTION)GetProcAddress(hInstance,"MyFunction");
    lpMyFunction();// call the function in the dll;...FreeLibrary(hInstance);
      

  2.   

    LoadLibrary
    GetProcAddress
    FreeLibrary
      

  3.   

    如果你的DLL只是导出了函数,没有.h和.lib文件支持,就这样:
    typedef 函数返回值类型 (*FUN)(函数参数列表);
    HINSTANCE hdll;
    FUN fun;
    hdll=LoadLibrary("文件路径");
    fun=GetProcAddress(hdll,"函数名");
    fun(参数);
    如果有.h和.lib就和普通的调用类中的函数是一样的。
      

  4.   

    see this:
    http://www.codeproject.com/dll/dllease.asp
    http://www.codeproject.com/dll/dynamicdllloading.asp
    http://www.codeproject.com/useritems/dll_calling.asp
      

  5.   

    两中方法,显示和隐示,后者的简单,只要加上头文件和*.lib(放在cpp文件夹中)就可以象用工整中的函数一样的用了。
    显示调用比较麻烦了,给你个例子看,
    //--定义“实例”
     HINSTANCE Dll_handler;//--声明dll内的函数
    typedef BOOL (*DLLTEST)(int nPort, int nBaud, int nByte, int nParity);
    DLLTEST CommOpen;;
    //--装载dll
    Dll_handler = LoadLibrary("Commpro.dll"); CommOpen = (DLLTEST)GetProcAddress(Dll_handler,"CommOpen");//--取得dll中的函数地址
    CommOpen(m_nPort,m_nBaud,m_nByte,m_nParity)
    FreeLibrary(Dll_handler);
    如果想要例子的话[email protected]
    或者网上好多例子呢,vchelp ,vckbase
      

  6.   

    简单例子,希望能给你一些帮助,这是动态调用。你也可以添加.lib来调用if (hHS_Dll==NULL)
    {
    if((hHS_Dll=::LoadLibrary("HSCOS.dll"))== NULL ) return LastStatus = HS_LOADDLL_ERROR;
    if((HS_Close=(pHS_Close)::GetProcAddress((HMODULE)hHS_Dll,"IFD_Close")) == NULL ) return LastStatus = HS_LOADDLL_ERROR;
    if((HS_Create_End=(pHS_Create_End)::GetProcAddress((HMODULE)hHS_Dll,"Create_End")) == NULL ) return LastStatus = HS_LOADDLL_ERROR;
      

  7.   

    如果你编写的是MFC扩展的DLL,那测试程序编译时要#include XXX.h,再Link相应的XXX.LIB文件,运行时需要相应的XXX.DLL文件.我的工程中是这样作的,不知对你有没有点帮助.