一个delphi的单元文件怎么编译成DLL文件?然后在BCB中能够调用? 谢谢大家了!!
文件如下:unit DMUnit;{$WARN SYMBOL_PLATFORM OFF}interfaceuses
  Windows, Messages, SysUtils, Classes, ComServ, ComObj, VCLCom, DataBkr,
  DBClient, SMS_TLB, StdVcl, Provider, DB, ADODB, Dialogs;type
  TSMSServers = class(TRemoteDataModule, ISMSServer)
    Query: TADOQuery;
    ADOQuery1: TADOQuery;
    Provider: TDataSetProvider;
    ClientDataSet: TClientDataSet;
  private
    procedure SeparateTerms(S: WideString; Separator: Char;
      Terms: TStringList);
    { Private declarations }
  protected
    class procedure UpdateRegistry(Register: Boolean; const ClassID, ProgID: string); override;
    {function SetMsg(const Msg, Tel, SendTime, areaId: WideString): WordBool;
      safecall;}
    function ModfiyMsg(const MsgID, Msg, Tel, SendTime: WideString): WordBool;
      safecall;
    function DelMsg(const MsgID: WideString): WordBool; safecall;
    function GetMsg: OleVariant; safecall; 
  public
    function SetMsg(const Msg, Tel, SendTime, areaId: WideString): WordBool;
      safecall;
    {function ModfiyMsg(const MsgID, Msg, Tel, SendTime: WideString): WordBool;
      safecall;
    function DelMsg(const MsgID: WideString): WordBool; safecall;
    function GetMsg: OleVariant; safecall;}
    { Public declarations }
  end;implementationuses MainUnit;{$R *.DFM}procedure TSMSServers.SeparateTerms(S: WideString; Separator: Char; Terms: TStringList);
var
  HS: WideString;
  P: Integer;
begin
  Terms.Clear;
  if Length(S) = 0 then
    Exit;
  P := Pos(Separator, S);
  while P <> 0 do
  begin
    HS := Copy(S, 1, P-1);
    Terms.Add(HS);
    Delete(S, 1, P);
    P := Pos(Separator, S);
  end;
  if Length(S) > 0 then
    Terms.Add(S);
end;function TSMSServers.DelMsg(const MsgID: WideString): WordBool;
begin
  Query.Close;
  Query.SQL.Clear;
  Result := True;
  try
    Query.SQL.Add('delete from msg_list where msg_id='+MsgID);
    Query.ExecSQL;
    MainForm.SetMsgFSSJ;
  except
    Result := False;
  end;
end;function TSMSServers.GetMsg: OleVariant;
begin
  ClientDataSet.Close;
  try
    ClientDataSet.CommandText:='SELECT * FROM msg_list ';
    ClientDataSet.Open;
    Result:=ClientDataSet.XMLData;
  except
   { on E: Exception do
    begin
      result:=AddLog('TSMSServer.GetMsg',E.Message);
    end; }
  end;
end;function TSMSServers.ModfiyMsg(const MsgID, Msg, Tel,
  SendTime: WideString): WordBool;
begin
  Query.Close;
  Query.SQL.Clear;
  Result := True;
  try
    Query.SQL.Add('update msg_list set msg_text='+QuotedStr(Msg)+',phone_list='
    +QuotedStr(Tel)+',send_date='+QuotedStr(SendTime)+' where msg_id='+MsgID);
    Query.ExecSQL;
    //MainForm.SetMsgFSSJ;
  except
    Result := False;
  end;
end;function TSMSServers.SetMsg(const Msg, Tel,
  SendTime, areaId: WideString): WordBool;
var
  SendTime1: String;
  ComID: Integer;
  DepName: String;
  I: Integer;
  FList: TStringList;
begin
  Query.Close;
  Query.SQL.Clear;
  Result := True;
  if Trim(SendTime) = '' then
    SendTime1 := FormatDateTime('YYYY-MM-DD HH:NN:SS',Now)
  else
    SendTime1 := SendTime;
  try
    DepName := FCC.GetDepName(areaId);
    ComID := FCC.GetCom(areaId);
    MainForm.WriteLog(Format('[%S]发送信息:时间[%S],手机号[%S],内容[%S]', [DepName, SendTime, Tel, Msg]));
    FList := TStringList.Create;
    try
      SeparateTerms(Tel, ',', FList); 
      for I := 0 to FList.Count - 1 do
      begin
        Query.SQL.Text := 'insert into Msg_List(msg_text,phone_list,Send_Date,send_type,COM_ID)'
                     //+' values('+QuotedStr(Msg)+','+QuotedStr(Tel)+',1,'+IntToStr(ComID)+')';
                     +' values('+QuotedStr(Msg)+','+QuotedStr(FList[I])+',''' +SendTime1+''',1,'+IntToStr(ComID)+')';
        //2表示定时消息  1表示即时消息
        Query.ExecSQL;
      end;
    finally
      FList.Free;
    end;    MainForm.Timer1.Enabled := True;
  except
    Result := False;
  end;
end;class procedure TSMSServers.UpdateRegistry(Register: Boolean; const ClassID, ProgID: string);
begin
  if Register then
  begin
    inherited UpdateRegistry(Register, ClassID, ProgID);
    EnableSocketTransport(ClassID);
    EnableWebTransport(ClassID);
  end
  else
  begin
    DisableSocketTransport(ClassID);
    DisableWebTransport(ClassID);
    inherited UpdateRegistry(Register, ClassID, ProgID);
  end;
end;initialization
  TComponentFactory.Create(ComServer, TSMSServers,
    Class_SMSServer, ciMultiInstance, tmApartment);
end.