소스만 보고 판단가능한 것은
델파이로 작성한 dll 함수중 ShowTestDlg 함수의 인자로 TApplication와 TWinControl를 받고 있고
그 함수를 호출하는 c#코드에서 Form과 Control 을 대입을 하고 있는데 당연히 안되겠지요-.-
win32용 vcl 과 닷넷 라이브러리와는 호환성이 없습니다.
청개구리 님이 쓰신 글 :
: 안녕하세요.
: 예전부터 볼랜드포럼 왕펜인데.....작업중 어려움이 있어 이렇게 질문을 올립니다.
: 다름이 아니라 delphi로 만든 폼 dll을 c#의 panel에 삽입해서 사용할려고 하는데 잘 안되네요.
: "보호된 메모리를 읽거나 쓰려고 했습니다. 대부분 이러한 경우는 다른 메모리가 손상되었음을 나타냅니다"
: 라는 에러가 뜨네요
: 무지한 저에게 도움 부탁드립니다.
:
: =========== delphi (dll)소스 ========
: .
: .
: uses
: SysUtils,
: Forms,
: Controls,
: Classes,
: uMain in 'uMain.pas' {frmMain};
: {$R *.RES}
: Procedure ShowTestDlg(App:TApplication; Parent:TWinControl); export;
: Begin
: Application := App;
: frmMain := TfrmMain.Create(App);
: frmMain.BorderStyle := bsNone;
: frmMain.Align := alClient;
: frmMain.Parent := Parent;
: frmMain.Show;
: End;
: exports
: ShowTestDlg;
: begin
: end.
:
: ====================== C# 소스 ===========================
: .
: .
: .
: using System.Runtime.InteropServices;
: namespace Study
: {
: public partial class frm_Recording : Form
: {
:
: [DllImport("dlltest.dll")]
: public static extern void ShowTestDlg(Form frm, Control ctl);
:
: public frm_Recording()
: {
: InitializeComponent();
: }
: private void frm_Recording_Load(object sender, EventArgs e)
: {
: ShowTestDlg(this, panel1);
: }
:
: }
: }
|