Q&A

  • 도와주세요 c로 된 dll 호출.
정리 해서 다시 올립니다.
dll의 c source가 아래와 같이 되어 있습니다.

int __export __stdcall MBOX_Connection(void);
int __export __stdcall Read_PSN(char* psn);
int __export __stdcall MBOX_Terminate (void);

이걸 delphi에서 dll 호출하여 사용해야 하는데, 잘 안됩니다.

Function Read_psn(Psn : pchar) : integer; stdcall; external 'C:\Sample1\MTI_PSNRead.dll';
function MBOX_Connection() : Integer; stdcall; external 'C:\Sample1\MTI_PSNRead.dll';
function MBOX_Terminate() : Integer; stdcall; external 'C:\Sample1\MTI_PSNRead.dll';

와 같이 선언하고,

procedure TForm1.Button1Click(Sender: TObject);
var
        a:integer;
        strTemp : pchar;
begin
        a:= Mbox_connection;
        a:= read_psn(strTemp);
        a:= Mbox_terminate;
end;

이렇게 실행하는데,

"프로세스 시작시점 read_psn을 dll c:\sample1\mti_psnread.dll에서 찾을수 없습니다." 라는 error가 뜨는군요..

도무지 어케 해야 할지.. 원참... 누구 아시는 분 꼭 좀 도와주세요..


2  COMMENTS
  • Profile
    최용일 2004.07.27 03:53
    안녕하세요. 최용일입니다.

    C는 대소문자를 구분합니다.

    델파이에서 선언한 함수는 Read_PSN에서 psn이 소문자네요.. 확인해보세요...

    ^^ 항상 즐코하세요...

  • Profile
    김진국 2004.07.27 04:18

    정말 감사합니다. ^^

    정말 생각지도 못했는데,..  이런곳에 실수가 있었다니..
    더이상 error는 나지 않습니다. 너무 감사하네요..^^

    그런데, 아래꺼 하나만, 더 봐주시면 안될까요..?
    (너무 염치없네요..^^)

    vb로 된 소스인데,  아래와 같이 정의하고,
    Declare Function MBOX_Connection& Lib "MTI_PSNRead.dll" ()
    Declare Function Read_PSN& Lib "MTI_PSNRead.dll" (ByVal x1$)
    Declare Function MBOX_Terminate& Lib "MTI_PSNRead.dll" ()
    ...
    아래와 같이 call 하거든요.. 아래 소스는 vb는  이상없이 잘 되는데,

    Private Sub Form_Load()
        
        Dim status As Integer
      
        status = MBOX_Connection()
        
    End Sub

    위의 소스를 delphi 에서 아래 처럼 바꿨는데,

    function MBOX_Connection() : Integer; stdcall; external 'C:\Sample1\MTI_PSNRead.dll';

    와 같이 정의 하고 다음과 같이 실행했는데 왜 안되는 걸까요..??
    혹시 이것도 의심가는 부분이 있으면 꼭 좀 알려주세요..^^

    너무 감사합니다.

    var
            a:integer;
            strTemp : pchar;
    begin
            a:= Mbox_connection;