2012-10-09 5 views
1

주 응용 프로그램은 C#이며, IPluginIPluginHost을 선언하는 다른 .NET DLL을 참조합니다. 이제 주 앱용 플러그인을 만들 수 있도록이 DLL을 Delphi 프로젝트로 가져와야합니다. 이게 가능하다고 들었지만, 클래스 (들여 오기를 원하지 않는)를 가져 오거나 .NET 내에서 Delphi 코드를 실행하는 것에 대해 많은 것들이 있습니다.Delphi에서 .NET 인터페이스 구현

누가 명확히 할 수 있습니까?

답변

3

델파이에서. NET 인터페이스를 직접 구현하는 것은 매우 어렵습니다 (가능한지 확실하지 않습니다). 그러나 손을 잡는 데 얼마나 더러운 지에 따라 몇 가지 옵션을 사용할 수 있습니다.

1) Delphi에서 ActiveX DLL을 만든 다음이 라이브러리를 .NET으로 가져올 수 있습니다. 그런 다음 인터페이스를 구현하고 호출을 Delphi ActiveX DLL로 라우트하는 C#으로 프록시 클래스를 만들 수 있습니다.

2) Delphi에서 기본 Windows DLL을 만든 다음 .NET에서 인터페이스를 코딩 할 수 있습니다. 그러면 C#에서 인터페이스를 구현하고 호출을 Delphi DLL에 라우트하는 프록시 클래스를 만들 수 있습니다.

3) .NET과 Delphi를 모두 지원하는 Hydra (http://www.remobjects.com/hydra/)와 같은 플러그인 프레임 워크를 사용할 수 있습니다.

이러한 모든 경우에 .NET 코드가 둘 다에서 실행될 수 있으므로 32/64 비트 상황을 처리해야하지만 Delphi 코드는 각 환경에 대해 독립적으로 컴파일해야합니다.

상황에 따라 Delphi 코드를 Oxygene (http://www.remobjects.com/oxygene/)이라는 .NET 바이트 코드를 생성하는 오브젝트 파스칼 형식으로 작성할 수도 있습니다.

편집 : 당신이 당신의 .NET 플러그인 프레임 워크에 사용하기 위해 델파이 플러그인을 만들려고하는 경우는 다음과 같이 할 가장 좋은 것입니다 :

당신의 IPlugIn 일치 델파이의 새로운 인터페이스 만들기 및 IPlugInHost 인터페이스. 그런 다음 Delphi 플러그인을로드하도록 지정하는 몇 가지 구성 정보가있는 .NET Delphi 플러그인 래퍼를 작성할 수 있습니다. 이 .NET 래퍼는 Delphi DLL을로드하고 필요에 따라 DLL 메서드를 호출합니다. 시각적 인 것들은 일종의 액티브 래퍼를 필요로하지만 비 시각적 인 것들을 잘 사용할 수 있어야합니다.

+0

인터페이스가 다른 곳에 선언되면 어떻게 될까요? 이미 별도의 파일에 있습니다. 대신 거기에 사용할 수있는보다 적절한/호환 가능한 프레임 워크가 있습니까? – Patrick

+0

당신은 델파이에서 인터페이스를 선언하고 델파이 쪽에서 인터페이스를 사용할 수 있습니다. 그러나 나는 그것이 많은 도움이 될지 확신하지 못합니다. 델파이 "플러그인"또는 여러 플러그인을 호스팅하려고합니까? – Graymatter

+0

COM/Active X 정보 : 잠재적 인 문제는 COM 개체를 관리자로 등록하여 응용 프로그램이 독립형이 될 수 없다는 것입니다 (직접 해당 .reg 파일을 만들고 HKEY_LOCAL_MACHINE이 아닌 HKEY_CURRENT_USER로 가져 오지 않는 한). –

2

가장 쉬운 방법은 .NET에서 COM 델파이 용 COM 래퍼 DLL을 제공하는 것입니다. .NET과의 상호 작용이 가장 고통스럽지 않다는 것을 알게되었습니다.

+0

.net 인터페이스를 구현하는 Delphi 코드를 생성하는 방법을 설명 할 수 있습니까? –

+0

그건 당신이 델파이에서 인터페이스를 구현하지 않는 나의 요점은, 당신은 COM 인터페이스를 구현하는 COM 호환 NET 게이트웨이/래퍼를 만들고 당신은 COM을 통해 필요한 기능을 노출. – whosrdaddy

+0

자세한 내용은 답변에 나와 있습니다. 그것은 분명하지 않다. –