我的.dll中有这样两个函数:
HANDLE  WINAPI  CT_open(char *name,unsigned int param1,unsigned char param2);
/*参数: name:与读写器相连的端口名称.
     串口读卡器可取COM1 COM2 COM3 COM4等
      param1:  串口读卡器为波特率,9600、38400等
      param2:  串口读卡器为奇偶校验,可为
             "O" 奇校验
             "E" 偶校验
             "N" 无校验                                                               */
int WINAPI CT_close(HANDLE fd);                                                       /*
    参数: fd为函数CT_open所返回的端口描述符.
    返回: -1为失败  0 成功.                                                            */
我这样定义调用他们对吗?
typedef Handle(winapi *POpen)(char *name,unsigned int param1,unsigned char param2);
typedef int(winapi *PClose)(HANDLE fd);

解决方案 »

  1.   

    Regular DLL 中函數聲明需要extern "C"__declspec(dllexport)關鍵字
      

  2.   

    可以,但要注意大小写:
    typedef HANDLE (  WINAPI  *POpen)(char *name,unsigned int param1,unsigned char param2);
    typedef int (WINAPI  *PClose)(HANDLE fd);
    定义变量:
    POpen CT_open;
    PClose CT_close;
      

  3.   

    那如果我想把这个.dll中的所有函数包含在一个类里,通过这个类来使用这些函数该怎么做啊?
      

  4.   

    那就定义个类,在类里面调用dll函数,就跟普通调用方法查不多,只是再加上一层包装。
      

  5.   

    #include
    void main(void)
    {
    typedef int(*pMax)(int a,int b);
    typedef int(*pMin)(int a,int b);
    HINSTANCE hDLL;
    PMax Max
    HDLL=LoadLibrary("MyDll.dll");//加载动态链接库MyDll.dll文件;
    Max=(pMax)GetProcAddress(hDLL,"Max");
    A=Max(5,8);
    Printf("比较的结果为%d ",a);
    FreeLibrary(hDLL);//卸载MyDll.dll文件;