C#からDelphi 7のDLLファイルを呼び出す際に問題が発生しました。私はC#の初心者です。Delphiについてはあまり知らないので、それほど大したことは分かりません。私はこの問題をできるだけ早く解決する必要があります。"保護されたメモリを読み書きしようとしました。これは他のメモリが壊れていることを示すことがよくあります。 Delphi7 DLL from C#
私はC#からdllを呼び出そうとしていますが、このエラーが発生します: "保護されたメモリを読み書きしようとしましたが、これは他のメモリが壊れていることを示しています。
なぜ私はそれが起こっているのか分からない。あなたが私のDelphiコードで見るように、私はどんな価値も返そうとしていません。 COMポートでいくつかのコマンドを送るだけでいいです。 :(誰もがここから出て私を助けることができる場合
のDelphi DLLコードしてください:
library Project2;
uses
SysUtils,
ComPort,
Classes;
var com1:TComport ;
{$R *.res}
procedure moveforward; export;
begin
com1.WriteAnsiString('#20 P1528 CR'+sLineBreak);
com1.WriteAnsiString('#7 P1465 CR'+sLineBreak);
end;
procedure movebackward; export;
begin
comport1.WriteAnsiString('#7 P1528 CR'+sLineBreak);
comport1.WriteAnsiString('#20 P1465 CR'+sLineBreak);
end;
procedure stopmove;export;
begin
comport1.WriteAnsiString('#20 P1500 CR'+sLineBreak);
comport1.WriteAnsiString('#7 P1500 CR'+sLineBreak);
end;
procedure catch; export;
begin
comport1.WriteAnsiString('#2 P2120 T2000 CR'+sLineBreak); //arm
comport1.WriteAnsiString('#30 P2260 T500 CR'+sLineBreak); //gripper
end;
procedure initialize; export;
begin
comport1.WriteAnsiString('#2 P2184 T1000 CR'+sLineBreak); //arm
comport1.WriteAnsiString('#30 P1980 T2000 CR'+sLineBreak); //gripper
end;
exports
moveforward, movebackward, stopmove, catch, initialize;
begin
end.
C#コード
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
[System.Runtime.InteropServices.DllImport("Project2.dll")]
public static extern void moveforward();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
moveforward();
}
}
}
すべてのヘルプは本当に
delphiタグを追加する必要があります。 –
'com1'または' comport1'ですか? –
確かに純粋なC#でこれを行うことができ、従ってpinvokesと余分なネイティブモジュール –