关于dll的调用[delphi]转为[C#]
这个是delphi下的调用语句:
===========
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
Function OpenImage (Const str1 : string ;Var ch1 : LongWord;Var ch2 : LongWord;Var ch3 : LongWord;Var ch4 : LongWord ): LongWord; Stdcall; External 'DISCERN.dll ';
type
TForm1 = class(TForm)
Button1: TButton;
OpenDialog1: TOpenDialog;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
str1:string;
s,c1,c2,c3,c4:LongWord;
begin
str1:= extractfilepath(paramstr(0)) + '061031163601Code.bmp ' ;
s:= OpenImage(str1 , c1 , c2 , c3 , c4);
edit1.Text:= chr(c1) + chr(c2) + chr(c3) + chr(c4) ;
end;
end.
===========
这是我写的C#调用的语句,但出错啦~~说是:
[
尝试读取或写入受保护的内存。这通常指示其他内存已损坏。]
请大侠帮我看看,我不会调用
=========
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace WindowsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
[DllImport( "discern.dll ")]
public static extern string OpenImage(string str1, char c1, char c2, char c3, char c4);
private void button1_Click(object sender, EventArgs e)
{
string cog_ycad = Environment.CurrentDirectory.ToString() + "\\061031163601Code.bmp ";
char c1 = char.Parse( " ");