现有一公司已开发的DLL,另外还带有“.h”和“.lib”二个文件,不知是何种语言开发。“.h”文件内容如下:
============================================================================
#ifndef MNP_H
#define MNP_H#ifdef  __cplusplus
extern "C" {
#endifBOOL __stdcall MnpCloseComm(void); //关闭串口
//Declare Function MnpCloseComm Lib "mnp" () As Longint __stdcall MnpInitComm(int nComm,int nSpeed);  //打开串口 return 0 正确
//Declare Function MnpInitComm Lib "mnp" (ByVal variable As Long,ByVal variable As Long) As LongBOOL __stdcall MnpBroadCast(BYTE byCode); //广播
//Declare Function MnpBroadCast Lib "mnp" (ByVal variable As Byte) As Longint __stdcall MnpYc(int nAdress ,DOUBLE dValue,BYTE nPoint,BYTE byFlag); //遥测
//Declare Function MnpYc Lib "mnp" (ByVal variable As Long,ByVal variable As Double,ByVal variable As Byte,ByVal variable As Byte) As LongBOOL __stdcall MnpYx(BYTE byBox,BYTE byLight,BYTE byCode); //遥信
//Declare Function MnpYx Lib "mnp" (ByVal variable As Byte,ByVal variable As Byte,ByVal variable As Byte) As LongBOOL  __stdcall MnpDimmer(BYTE nLight);    //调光
//Declare Function MnpDimmer Lib "mnp" (ByVal variable As Byte) As Long#ifdef  __cplusplus
}
#endif#endif===============================================================================
帮助文件中说明如下(部分):
此软件驱动采用动态连接库的形式,方便用户自己编写与模拟屏的接口,用户的编程语言可以为C,C++,Vb等。
  使用方法:对于Win9x将动态连接库mnp.dll拷入system
对于WinNt/2000将动态连接库mnp.dll拷入system32
首先要调用初始化串口函数MnpInitComm,在程序退出时调用关闭串口函数MnpCloseComm。
此连接库由5个函数组成。
1. 初始化串口:
c函数原型  int __stdcall MnpInitComm(int nComm,int nSpeed);  
vb函数原型 Declare Function MnpInitComm Lib "mnp" (ByVal variable As Long,ByVal variable As Long) As Long
参数:int nComm  串口号,从1开始
int nSpeed 波特率,有效值为1200、2400、4800、9600
返回值: 0 正确
1 CreateFile 错误
2 BuildCommDCB 错误
3 SetCommState 错误
4 SetCommTimeouts 错误
-------------------------------------------------------现要在程序中调用该DLL,在DELPHI中应该如何做,请高手详细写出步骤。公司有急用,谢谢!!!!!

解决方案 »

  1.   

    两种方法:
    按照它给出的函数原型申明外部函数(具体见Windows.pas单元):
    function MnpInitComm(nComm,nSpeed:integer):integer; external 'mnp.dll';
    这样,就可以象Delphi内部函数一样引用了。或是动态引用var
      h : handle ;
      fun : funciton (integer,integer) of integer ;//大概是这样的吧?
    begin
      h := LoadLibrary('mnp.dll') ;
      if h <> 0 then
      begin
        fun := GetProcAddress(h) ;
        //调用
        fun(1,1200) ;
      end;
    end;
      

  2.   

    补充,第一种方法为静态引用,任何讲Delphi的书上都会涉及,在DLL一章
      

  3.   

    也可以在Implementation前加上
    function MnpInitComm(nComm: integer; nSpeed: integer): integer;  external 'mnp.dll';然后就可以在下面的程序中调用MnpInitComm函数了