this question 이후에 다른 버전의 Delphi와 호환되는 DLL에서 클래스의 캡슐화를 수행하려면 어떤 원칙을 따라야하는지 알아야합니다. RAD2010에서 제네릭 기능을 사용하여 클래스를 만들고 인스턴스를 반환하는 함수가있는 DLL을 만듭니다. BDS2006 또는 Delphi 6을 사용하여 DLL을 사용하려고 시도했지만 DLL이 예상대로 작동하지 않았습니다. 그러나 다른 컴퓨터에서 RAD2010을 사용하면 아무런 문제가 없습니다. 그것은 이전 델파이 버전 (스택 <> 거즈?)에서 사용할 수없는 기능을 사용하여 발생합니까? 문자열 문제에 대해서는 이미 라이브러리 파일의 주석 지침을 따르므로 라이브러리의 첫 번째 용도 절과 내 프로젝트에 ShareMem을 넣습니다. 그리고 RAD2010의 borlndmm.dll을 BDS2006을 사용하여 DLL을 시도한 동일한 폴더로 복사했습니다. 충돌을 일으키지는 않았지만 예상대로 작동하지 않았습니다. 함수는 RAD2010 환경에서 매우 잘 작동 할 때 빈 문자열을 반환합니다.델파이를 사용하여 DLL을 만들려면 어떤 원칙을 따라야합니까? 다른 델파이 버전에서도 잘 작동합니까?
다시 한 번 질문 드리겠습니다. 다른 버전의 Delphi와 호환되는 DLL에서 클래스의 캡슐화를 만들기 위해 어떤 원칙을 따라야합니까? 미리 감사드립니다. (OOP가 사용되지 않을 때 dll에 함수를 캡슐화하기 위해 다른 버전의 Delphi는 발행하지 않았습니다.)
나는 두 번째 단락을 강하게 강조하고 싶습니다. Windows API에 공개 된 기능이 보이지 않으면 자신의 DLL에이 기능을 드러내지 마십시오. C, 심지어 이전에는 보지 못했던 환경에서 DLL을 사용한다고 가정하십시오. –
+1. 인터페이스 메소드 매개 변수와 함수 결과에 델파이 특정 유형이 없어야하고 (또한) 필 요한 부분도 아니어야 함을 지적하는 것도 가치가 있습니다. – mghie
+1. 아마도 비 관련이지만, 델파이가 아닌 다른 언어로 그들을 소비하려는 경우 모든 (비 COM) DLL 내보내기를 stdcall로 선언하는 것을 잊지 마십시오. –