Q&A

  • VC++ Dll을 Delphi 사용시 에러
안녕하세요.
VC++ Dll을 Delphi에서 호출하는데 시작부터 자꾸 에러네요...

#if defined(_WIN32) && defined(_DLL)
#ifdef EFLUX_EXPORTS
#define efx_api                __declspec(dllexport)
#else
#define efx_api                __declspec(dllimport)
#endif
#else
#define efx_api
#endif

efx_api UINT32 efx_get_ticks();

이런 DLL을

Delphi에서

function efx_get_ticks : smallInt; stdcall; external 'efluxd.dll';
이런식으로 선언을 했더니 컴파일은 되는데
위의 함수를 불러서 코딩만 해놔도 실행이 안되네요..

해결방안을 아시면 좀 부탁드립니다.
3  COMMENTS
  • Profile
    정태욱 2006.08.21 19:08
    안녕하세요.

    DLL Function을 소스에 추가하면 바로 에러가 나는것은
    DLL내에서 해당 Function을 찾지 못해서 발생하는 경우가 대부분입니다.

    다시한번 선언 및 Export가 제대로 되어있는지 확인하셔야 할것같습니다.

    예제.

    [ VC++ DLL ]
    __declspec(dllexport) int TestAdd(int a, int b)
    {
            return ((a << 8) + b);
    }

    [ Delphi ]

    function TestAdd(a, b: Integer): Integer; stdcall; external 'Test.dll';

    procedure TForm1.Button6Click(Sender: TObject);
    var
      a, b, c:  Integer;
    begin
      a := Random(255);
      b := Random(255);
      c := TestAdd(a, b);
      ShowMessage(Format('DLL Function Test (%d+%d=%d)', [a, b, c]));
    end;

    이상입니다. ^^ 즐거운 하루되세요~

  • Profile
    이정욱 2006.08.19 00:32
    stdcall 대신 cdecl 로 고쳐서 해보세요.

  • Profile
    이경원 2006.08.19 00:49
    동일합니다.
    제가 폼에다가 버튼하나를 놓고
    버튼 이벤트에 아래 함수를 써 놓기만 했는데

    실행하면
    program prjConsum;

    uses
      Forms,
      uTestForm in 'uTestForm.pas' {Form1},
      uEflux in 'uEflux.pas';

    {$R *.RES}

    begin     ===> 이부분에서 멈추면서 에러(Access violation Error 발생)
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.Run;
    end.

    대신 아래 함수를 지우면 에러 없이 실행 되네요....
    무엇이 문제인지....

    • 유승혁
    • 2006.08.18 23:59
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 강인규
      2006.08.20 05:49
      질문이 명확치 않아 무엇을 원하시는지는 잘 모르겠지만 섹션안의 내용을 불러오려면 ReadSection 함수...
    • 이영주
      2006.08.19 02:03
      Row가 변하는 내용일것 같은데 굳이 ini 파일로 처리하려는 이유가 있나요? Text 파일처럼 불러오는 것이 ...
    • 이경원
    • 2006.08.18 20:54
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 정태욱
      2006.08.21 19:08
      안녕하세요. DLL Function을 소스에 추가하면 바로 에러가 나는것은 DLL내에서 해당 Function을 찾지 ...
    • 이정욱
      2006.08.19 00:32
      stdcall 대신 cdecl 로 고쳐서 해보세요.
    • 이경원
      2006.08.19 00:49
      동일합니다. 제가 폼에다가 버튼하나를 놓고 버튼 이벤트에 아래 함수를 써 놓기만 했는데 실행하면 ...
    • 이정욱
      2006.08.19 22:19
      무료는 아니구요  FastReport가 있습니다.
    • 착한천사
      2006.08.20 02:36
      착한천사입니다. 퀵리포트를 추가해야만 합니까? Install Shield에 Compile된 Binary파일(*.Exe)을 넣기 ...
    • coolkkm
    • 2006.08.17 23:06
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 착한천사
      2006.08.20 02:25
      착한천사입니다. overload는 함수명/프로시저명이 동일하지만 받는 argument가 다른 것을 이야기합니다....
    • 최성준
      2006.08.19 15:26
      책보면 다 나오는데... 쩝... 다른 파라미터를 가진 함수들이 여러 개의 같은 이름의 프로시저나 ...
    • KDDG_Apine
      2006.08.17 02:32
      재설치까지 하실 필요는 없는듯 한데요...  일반 코드를 수정하셨다면   해당 컴포넌...
    • 권태훈
      2006.08.18 18:24
      제가 궁금한것은 .pas가 dpk로 묶여서 등록된 상태에서 어느 pas는 수정만 하면 어플에 적용이 되고, ...
    • 김현철
    • 2006.08.17 01:33
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2006.08.17 03:32
      안녕하세요. 최용일입니다. "IdFTP에는 Account라는것을 제공하지 않는다"는게 무슨 말씀이신지요? A...
    • 김현철
      2006.08.17 03:54
      ㅡㅡ; 그러게여! 저도 그게 무슨 말인지 모르겠어여! 다만... 로곤시에 user, password, account를 입...
    • 최용일
      2006.08.17 04:19
      안녕하세요. 최용일입니다. 저도 FTP는 잘 모르는데요... FTP연결한뒤에 IdFTP.Account메소드를 이용...
    • 최준호
    • 2006.08.17 01:28
    • 1 COMMENTS
    • /
    • 0 LIKES
    • KDDG_Apine
      2006.08.17 02:28
      string 의 값이 utf 8 이면 이걸 다시 string 바꿔야 합니다..   utf8 은 일반 ansi string을 다...
    • 착한천사
      2006.08.25 03:33
      착한천사입니다. 한글은 자음과 모음으로 구사된것은 아실거라 판단됩니다. 따라서, 자음별,모음으로 조...
    • 최용일
      2006.08.16 22:40
      안녕하세요. 최용일입니다. 그냥 for문써서 카운팅하세요... <!--CodeS--> var   ...
    • 태권브이
      2006.08.16 23:22
      답변에 감사드립니다. ^^ 그런데..하나하나 세는 방법말고 특정문자만 갯수를 알아내는 함수는 없나요? ...
    • 최용일
      2006.08.17 00:11
      안녕하세요. 최용일입니다. 왜 카운트가 올라가는것이 부담스러운지 의문이네요... 델파이에서 함수...
    • 최용일
      2006.08.16 20:13
      안녕하세요. 최용일입니다. 한 행렬이 800M(Col*Row*SizeOf(double))나 되서 여러개의 행렬을 쓰시면 ou...
    • 권태훈
      2006.08.16 18:47
      가장 쉬운 방법은 프로젝트 설정에서 관련 메모리 값을 증가시켜 주는겁니다. alt-f11이던가..누르면 나...
    • 조현태
    • 2006.08.15 07:28
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 박홍재
      2006.08.15 11:40
      음 어찌 설명을 해 드려야 하나... 어떤 Database를 사용하고 계신지는 모르겠으나 일단 어떤 DB라도 명...
    • 조현태
      2006.08.16 11:39
      친절한 답변 감사드립니다(--)(__) DB는 FireBird 1.5.2 를 사용중입니다. 말씀해주신 Commit 처리를...
    • 정경철
    • 2006.08.15 02:48
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 하수경
    • 2006.08.15 01:55
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 황영일
    • 2006.08.14 23:19
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2006.08.16 19:49
      안녕하세요. 최용일입니다. Navigate한후에 완료되서 Response를 얻기까지 어느정도 시간이 걸리기 때문...
    • sora
    • 2006.08.14 20:19
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박상윤
      2006.09.12 05:05
      미디어 플레이어 가지고는 한계가있습니다. Windowless하면 화면을 먹는 현상도 발생합니다. 원사이즈 그...
    • 채태숙
    • 2006.08.14 09:42
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2006.08.19 00:36
      일단 Application := AOwner 부분을 빼시고, Parent라는 변수 명을 다른 변수명(ParentPanel 등)을 써보세...