을 사용하여 .NET .dll에서 기본 .dll을 만들면 COM 등록없이 Delphi에서 .NET 코드에 액세스 할 수 있습니다.등록하지 않고 FoxPro 및 .NET COM
type
IDotNetAdder = interface
['{ACEEED92-1A35-43fd-8FD8-9BA0F2D7AC31}']
function Add3(left : Integer) : Integer; safecall;
end;
procedure CreateDotNetAdder(out instance : IDotNetAdder); stdcall;
external 'DelphiNET' name 'createdotnetadder';
var
adder : IDotNetAdder;
begin
try
CreateDotNetAdder(adder);
Writeln('4 + 3 = ', adder.Add3(4));
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
이 내용은 내 Delphi question and answers를 참조하십시오 : 델파이에서 동일한 인터페이스를 정의 할 때
using System;
using System.Collections.Generic;
using System.Text;
using RGiesecke.DllExport;
using System.Runtime.InteropServices;
namespace DelphiNET
{
[ComVisible(true)]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[Guid("ACEEED92-1A35-43fd-8FD8-9BA0F2D7AC31")]
public interface IDotNetAdder
{
int Add3(int left);
}
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
public class DotNetAdder : DelphiNET.IDotNetAdder
{
public int Add3(int left)
{
return left + 3;
}
}
internal static class UnmanagedExports
{
[DllExport("createdotnetadder", CallingConvention = System.Runtime.InteropServices.CallingConvention.StdCall)]
static void CreateDotNetAdderInstance([MarshalAs(UnmanagedType.Interface)]out IDotNetAdder instance)
{
instance = new DotNetAdder();
}
}
}
, 나는 쉽게 .NET 객체를 사용할 수 있습니다
예를 들어 나는이 .NET 어셈블리를 .
내 질문 :
FoxPro에서 이와 비슷한 기능을 사용할 수 있습니까? 나는 라인 createdotnetadder(@ldnw)
에 데이터 형식이 일치하지 오류와 함께 실패 다음 시도했다 :
DECLARE createdotnetadder IN DelphiNET.dll object @ ldnw
ldnw = 0
createdotnetadder(@ldnw)
loObject = SYS(3096, ldnw)
? loObject.Add3(4)
내가 유사있는 FoxPro 인터페이스를 정의 할 수 있습니다 델파이에서 그것을 어떻게? 그렇지 않으면 FoxPro에서이 .dll을 전혀 사용할 수 있습니까? Visual FoxPro 9.0 SP2를 사용합니다. 감사.
Rick Strahl은 VFP COM Interop에 대한 다음 글을 잘 보았습니다. http://www.west-wind.com/presentations/VfpDotNetInterop/DotNetFromVFP.asp –
@Brian : Rick의 페이지에 대해 알고 있습니다. 나는 COM 등록을 피하고 싶었지만 FoxPro에서는 불가능한 것 같습니다. –