Delphi로 동적 라이브러리 DLL 개발

2599 단어 Delphi
회사의 ERP 시스템은 줄곧 우편물에 의해 번거로워졌다.이전에 ERP에서 메일을 보냈을 때 인터넷에서 찾은 DLL 파일을 사용했는데 원본 코드가 없었다.이 DLL 파일은 SMTP 방식을 채택하여 간단한 메일 발송을 실현할 수 있고 더욱 고급스러운 기능은 없다. 예를 들어 사본, 첨부파일, HTML 방식으로 발송하는 등이다.최근에 시간이 좀 있어서 짬을 내서 이 문제를 해결했다.우선 Wireshark로 이 DLL 파일을 보낼 때의 데이터 패키지를 모니터링한 결과 Delphi의 인디 구성 요소로 구체적으로 이루어졌을 것으로 보인다.인디 모듈이 마침 잘 쓰이기 때문에 델피+인디로 자신의 DLL 메일 발송 기능을 개발하여 회사가 줄곧 곤란해 왔던 문제를 해결하였다.Delphi가 PowerBuilder 호출을 위해 DLL을 개발하는 과정에서 주의해야 할 몇 가지 문제: 1.Delphi는 ActiveX Library 방식을 사용합니다. 이렇게 컴파일하면 DLL 파일이 생성됩니다.2. 하나의 단독 유닛으로 구체적인 실현 코드를 저장하는 것이 좋다. 이런 목적은 다른 테스트용 응용 프로그램을 구축하는 데 편리하도록 하는 것이다.예를 들어sendmail 이 구성 요소의 모든 실현 코드는sendimpl에 있습니다.pas에 테스트용testform을 만들었습니다. 이 테스트 프로그램은sendimpl을 직접 포함합니다.패스하면 돼요. 편해요.3. Delphi가 외부에서 호출되어야 하는 가장 좋은 것은 함수function입니다. 프로세스procedure가 없으면 PowerBuilder 호출 과정에 항상 문제가 있는지 테스트합니다.4. Delphi는 외부에서 호출해야 하는 모든 함수를 stdcall 호출이라고 합니다.5. Delphi는 외부에서 호출되는 함수에 문자 매개 변수나 반환 값이 있으면 PChar 형식을 사용하고 String을 사용하지 않습니다.다음은 참고 코드 세션입니다.Delphi의 함수 정의
function incvalue(const x: Integer): Integer; stdcall;

function UpperString(Msg: PChar): PChar; stdcall;

function SendMessageFile(sFile: PChar): Integer; stdcall;

  2. Delphi
exports incvalue, UpperString, SendMessageFile;

 

3. PowerBuilder

FUNCTION long incvalue(long fdf) Library "M:\projects\sendmail\sendmail.dll" 

FUNCTION int SendMessageFile( string sFile) Library "M:\projects\sendmail\sendmail.dll" 

FUNCTION string UpperString( string sFile) Library "M:\projects\sendmail\sendmail.dll" 

 

http://files.cnblogs.com/eastson/sendmail.rar

좋은 웹페이지 즐겨찾기