大家好:
     我用Delphi 7 写了一个串口通讯应用程序,它的“工程文件”的代码如下:
************************************************************************
program Project1;uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1};{$R *.res}begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.*************************************************************************这个应用程序能实现一个完整的通讯功能。现在我想把它生成DLL格式的动态连接库
文件,用来让非Delphi程序调用。请问各位高手我应该怎么改呢?请前辈们指教。

解决方案 »

  1.   

    如果你这个程序用了控件,必须要用form当容器的话,
    那就在工程文件里定义创建窗体,撤销窗体,以及你想要调用的函数。如果你没有用什么控件也不用form做容器的话,
    就不要封装form了,按照一般的dll文件做法,直接把你想要调用的函数输出就好了。
      

  2.   

    http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=68276
      

  3.   

    flyforlove(为情飞)
      您好:
      我的这个程序用了控件,必须要用form当容器。请您简单的给我个提示好吗?没有别的输出
    函数,只是为了让非Delphi程序调用这个动态连接库是出现这个应用程序窗体。
      请指导。
    我先到http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=68276  看看太谢谢你了。
      

  4.   

    http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=68276
    这个帮助不是已经说得很清楚了吗?
    你还有什么不明白的?
    我给你一个简单的示例,你自己按照改吧。dll工程文件
    library Project2;uses
      SysUtils,
      Classes,
      forms,
      Unit2 in 'Unit2.pas' {Form1};{$R *.res}
    procedure  LoadForm(AppHandle:THandle);stdcall;
    begin
       Application.Handle:=AppHandle;
       Form1:=TForm1.Create(Application);
       Form1.Show;
    end;
    procedure  UnLoadForm();stdcall;
    begin  
       if  Assigned(Form1)  then  
           FreeAndNil(Form1);  
    end;
    exports
    LoadForm,
    UnLoadForm;
    begin
    end.调用dll的工程unit1.pasunit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;  procedure  LoadForm(AppHandle:THandle);stdcall;external 'Project2.dll';
      procedure  UnLoadForm();stdcall;external 'Project2.dll';
    implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject); //打开窗体。
    begin
    loadform(application.Handle);
    end;procedure TForm1.Button2Click(Sender: TObject); //关闭窗体。
    begin
    UnLoadForm();
    end;end.
      

  5.   

    与这个类似,帮忙看看:
    http://expert.csdn.net/Expert/topic/2516/2516793.xml?temp=.2864191