dlphi를 사용하여 dll 다중 파일을 만드는 제안
표준 DLL 인터페이스를 사용해보십시오. 이는 전달 된 매개 변수 유형 및 함수 리턴 유형이 String (ANSSESTRING)과 같은 Delphi에 고유 할 수 없으며 동적 배열 및 복합 유형 (예 : 레코드)을 포함하거나 데이터 구성원을 포함 할 수 없음을 의미합니다. 이러한 유형의 멤버. 오류를 피하기 위해 객체 유형. 문자열 유형 또는 동적 배열 유형을 사용하고 발신자가 델파이 프로그램이 아닌 경우 기본적으로 오류를보고합니다. 발신자가 Delphi 인 경우 오류가 발생할 수 있지만 발신자 또는 Callee가 Sharemem이 아닌 프로젝트 파일의 첫 번째 단위에 있지 않습니다.
발신자가 델파이 애플리케이션 인 경우 금지 된 유형 (문자열, 동적 배열)의 데이터 구성원이 매개 변수 또는 반환 값으로 포함되지 않은 객체를 사용할 수 있지만 가능한 한 많이 피해야합니다.
발신자와 통화 당사자가 델파이 프로그램이고 문자열 또는 동적 배열을 매개 변수로 사용해야하는 경우, 두 당사자 간의 프로젝트 파일의 첫 번째 포함 장치는 Sharemem이어야합니다. (C ++ 빌더 프로그램은 동일하지만 테스트되지 않았습니다.)
발신자가 델파이 프로그램, 문자열, 동적 배열, 복합 데이터 유형 및 문자열 또는 동적 배열을 포함하는 클래스 인스턴스가 아닌 경우 매개 변수 또는 반환 값으로 사용할 수 없습니다.
따라서, DLL의 다중 범위를 개선하고 가능한 오류를 피하려면 표준 Win32 API 표준 매개 변수 유형을 사용하여 문자열 변수를 사용해야합니다. 동적 배열은 포인터 유형 (@array [0])로 변환되고 배열의 길이를 추가합니다.
발신자와 통화 당사자가 모두 델파이 프로그램이고 서면 편의를 위해 위의 전환을 수행하고 싶지 않은 경우 런타임 패키지의 형태를 사용하는 것이 좋습니다. 런타임 패키지는 동적으로 할당 된 데이터의 올바른 릴리스를 보장 할 수 있습니다. 이런 식으로 확장 (.BPL) 때문에 파일이 DLLL과 달리 Delphi/C ++ Builder로 제한되어 있음을 보여줍니다.
둘째, 과부하 기능/프로세스를 가능한 한 많이 사용하지 않으려고 노력하십시오. 그리고 CreateByDefaultFile 및 CreateFault와 같은 Delphi의 메소드.
마지막으로 DLL의 제공 업체로서 Delphi의 .pas 또는 .dcu와 같은 직접 프로그래밍 인터페이스 파일 (주석이있을 수있는 .h 및 .lib), c 및 c ++. 사용자가 스스로 만들 수있게하는 대신. 과부하 기능/프로세스가 있어야하는 경우 특히 중요합니다. 또한 Delphi 응용 프로그램으로서 제공된 .pas 파일은 미리 연결 될 수 있습니다 (DLL에서 출력 함수를 지정하기 위해 외부를 사용하여 Loadlibrary 및 GetProcaddress 사용). 공식 (또는 HIQO)이며 보장된다는 것을 보여줍니다.