读书人

DELPHI DLL对象的引出,该如何解决

发布时间: 2012-03-20 14:01:11 作者: rapoo

DELPHI DLL对象的引出

Delphi(Pascal) code
unit StringConvertImp;{$DEFINE STRINGCONVERTLIB}interfaceuses SysUtils;{$I StrConvert.inc}function InitStrConvert(APrepend, AAppend: String): TStringConvert; stdcall;implementationconstructor TStringConvert.Create(APrepend, AAppend: String);begin  inherited Create;  FPrepend := APrepend;  FAppend  := AAppend;end;destructor TStringConvert.Destroy;begin  inherited Destroy;end;function TStringConvert.ConvertString(AConvertType: TConvertType; AString: String): String;begin  case AConvertType of    ctUpper: Result := Format('%s%s%s', [FPrepend, UpperCase(AString), FAppend]);    ctLower: Result := Format('%s%s%s', [FPrepend, LowerCase(AString), FAppend]);  end;end;function InitStrConvert(APrepend, AAppend: String): TStringConvert;begin  Result := TStringConvert.Create(APrepend, AAppend);end;end.

Delphi(Pascal) code
type  TConvertType = (ctUpper, ctLower);  TStringConvert = class(TObject){$IFDEF STRINGCONVERTLIB}  private    FPrepend: String;    FAppend : String;{$ENDIF}  public    function ConvertString(AConvertType: TConvertType; AString: String): String;      virtual; stdcall; {$IFNDEF STRINGCONVERTLIB} abstract; {$ENDIF}{$IFDEF STRINGCONVERTLIB}    constructor Create(APrepend, AAppend: String);    destructor Destroy; override;{$ENDIF}  end;{ For any application using this class, STRINGCONVERTLIB is not defined and  therefore, the class definition will be equivalent to:  TStringConvert = class(TObject)  public    function ConvertString(AConvertType: TConvertType; AString: String): String;      virtual; stdcall; abstract;  end;}

StrConvert.inc,里面包含很多编译条件语句,总是不能理解,谁能告诉我?
能不能改成
Delphi(Pascal) code
type  TConvertType = (ctUpper, ctLower);  TStringConvert = class(TObject){$IFDEF STRINGCONVERTLIB}  private    FPrepend: String;    FAppend : String;  public    function ConvertString(AConvertType: TConvertType; AString: String): String;virtual; stdcall;  abstract;     constructor Create(APrepend, AAppend: String);    destructor Destroy; override;{$ENDIF}  end;{ For any application using this class, STRINGCONVERTLIB is not defined and  therefore, the class definition will be equivalent to:  TStringConvert = class(TObject)  public    function ConvertString(AConvertType: TConvertType; AString: String): String;      virtual; stdcall; abstract;  end;}


[解决办法]
http://blog.donews.com/doijoy/archive/2004/12/01/189341.aspx
[解决办法]
StrConvert.inc
inc一般用来定义编译头文件

读书人网 >.NET

热点推荐