자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi 개발연동하는데 C# DLL로 되어있는데 이걸 참고해서 델파이로 로딩하는게 가능한가요?
2016.08.08 16:05
C#개발자가 첨부해드린 DLL과 함께 아라와같이 하라고 보내줬는데
이거 가지고 델파이에서 첨부한 DLL을 사용할 수 있나요?
TYPE LIB나 ACTIVE X 형태는 아닌것 같은데, 잘 아시는 분 있으시면 답변 부탁드립니다.
1. .Net Framework 4.0은 윈도우 7 이상에서 기본으로 설치 되어있습니다.
à XP를 사용하는 환경에서는 별도로 설치를 해야 합니다.
2. 보내드린 파일은 테스트 용 입니다.
- 참조 파일명 : VRS.Common.dll
- 연결 클라스 : VRS.Common.Net.WCFClient
- 이벤트 : Connected (client 연결시)
Closed (client 종료시)
ServerDataReceived (서버로부터 데이터 수신시)
- 메소드 : Reuqest (서버에 요청시)
- 서버/클라이언트 전송시 사용하는 클라스 : VRS.Common. WCFData
아래소스 참조하세요
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using VRS.Common;
using VRS.Common.Net;
namespace TestClient
{
public partial class Form1 : Form
{
WCFClient client = null;
public Form1()
{
InitializeComponent();
client = new WCFClient();
client.ServicePort = 9701;
client.Connected += client_Connected;
client.Closed += client_Closed;
client.ServerDataReceived += client_ServerDataReceived;
}
void client_ServerDataReceived(WCFData data)
{
txtMsg.Text = data.GetString("Msg");
}
void client_Closed(object sender, EventArgs e)
{
MessageBox.Show("Closed");
}
void client_Connected(object sender, EventArgs e)
{
MessageBox.Show("Connected");
}
private void btnConn_Click(object sender, EventArgs e)
{
client.Connect();
}
private void btnClose_Click(object sender, EventArgs e)
{
client.Close();
}
private void btnRequest_Click(object sender, EventArgs e)
{
try
{
WCFData reqData = new WCFData();
WCFData resData = client.Reuqest(reqData);
if (resData != null)
{
MessageBox.Show(resData.GetString("Data"));
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}
}
Delphi 개발연동하는데 C# DLL로 되어있는데 이걸 참고해서 델파이로 로딩하는게 가능한가요?
2016.08.08 16:05
C#개발자가 첨부해드린 DLL과 함께 아라와같이 하라고 보내줬는데
이거 가지고 델파이에서 첨부한 DLL을 사용할 수 있나요?
TYPE LIB나 ACTIVE X 형태는 아닌것 같은데, 잘 아시는 분 있으시면 답변 부탁드립니다.
1. .Net Framework 4.0은 윈도우 7 이상에서 기본으로 설치 되어있습니다.
à XP를 사용하는 환경에서는 별도로 설치를 해야 합니다.
2. 보내드린 파일은 테스트 용 입니다.
- 참조 파일명 : VRS.Common.dll
- 연결 클라스 : VRS.Common.Net.WCFClient
- 이벤트 : Connected (client 연결시)
Closed (client 종료시)
ServerDataReceived (서버로부터 데이터 수신시)
- 메소드 : Reuqest (서버에 요청시)
- 서버/클라이언트 전송시 사용하는 클라스 : VRS.Common. WCFData
아래소스 참조하세요
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using VRS.Common;
using VRS.Common.Net;
namespace TestClient
{
public partial class Form1 : Form
{
WCFClient client = null;
public Form1()
{
InitializeComponent();
client = new WCFClient();
client.ServicePort = 9701;
client.Connected += client_Connected;
client.Closed += client_Closed;
client.ServerDataReceived += client_ServerDataReceived;
}
void client_ServerDataReceived(WCFData data)
{
txtMsg.Text = data.GetString("Msg");
}
void client_Closed(object sender, EventArgs e)
{
MessageBox.Show("Closed");
}
void client_Connected(object sender, EventArgs e)
{
MessageBox.Show("Connected");
}
private void btnConn_Click(object sender, EventArgs e)
{
client.Connect();
}
private void btnClose_Click(object sender, EventArgs e)
{
client.Close();
}
private void btnRequest_Click(object sender, EventArgs e)
{
try
{
WCFData reqData = new WCFData();
WCFData resData = client.Reuqest(reqData);
if (resData != null)
{
MessageBox.Show(resData.GetString("Data"));
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}
}
DLL은 윈도우 표준이기 때문에 델파이에서 연동할 수 있습니다.
하지만 DLL에서 제공해주는 함수가 표준 데이터 타입(Integer, Char, AnsiChar, 캐릭터포인터(PChar) 등)을 사용해야 합니다.
올려주신 내용에는 Export하는 내용이 없어 위내용은 알 수 없네요.(소스를 잘 찾아보시면 있을 것입니다.)
아래 스택오버플로우의 내용을 참고해 보세요.
http://stackoverflow.com/questions/6174584/call-c-sharp-dll-from-delphi