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一般用来定义编译头文件