C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[6529] Re:빌더에서 PASCAL 이 먹히나요?
박지훈.임프 [cbuilder] 2115 읽음    2001-04-03 14:47
도난경보기 님이 쓰신 글 :
: 제 프로그램에서 다른 모듈을 붙여서 사용해야 하는데요...
: DLL 에서 제공하는 함수 프로토타입이
:
: int PASCAL func_name(LPSTR param);
:
: 이런 식으로 되어있거든요.....
: 그래서 책을 찾아서 동적 DLL 링킹에 관한 부분을 보고 다음과 같이 코딩했습니다.
: FormCreate 에 추가한 코드입니다.
:
: typedef int PASCAL (*IMPPROC)(LPSTR);
:
: LPSTR param="ABCDEFGH";
: int i;
: HINSTANCE DllInstance;
: IMPPROC ImpFunc;
: DllInstance = LoadLibrary("ABC.DLL");
: ImpFunc = (IMPPROC)GetProcAddress(DllInstance, "func_name");
: i = ImpFunc(param);
:
: func_name 이 리턴하는 값은
: 0 : success
: -1 : fail
: -2 : not installed
: 입니다.
: 근데 i 값을 확인하면 1 이 넘어오거든요.
: 제가 C++ 이랑 빌더랑 초보라서.....
: 뭐가 잘못된건지 알려주세요... ^^


임펠리테리입니다.

C/C++은 아주 초기부터 pascal 콜링 컨벤션을 지원했습니다. (단지, 대문자로 쓰신 점은 좀 맘에 걸립니다. 소문자가 표준입니다.)
문제는 다른 부분에서 발생된 듯 하군요. 콜링 컨벤션이 잘못되었다 하더라도 엉뚱한 값이 전달될 수는 없습니다. 만약 임포트할 함수의 주소가 제대로 돌아오지 않은 거라면 호출할 때 억세스바이얼레이션이 뜰 테니 그 경우는 아닐테고.. 다시 한번 확인하시죠...

그럼 참고하시길...

+ -

관련 글 리스트
6482 빌더에서 PASCAL 이 먹히나요? 도난경보기 2016 2001/03/31
6529     Re:빌더에서 PASCAL 이 먹히나요? 박지훈.임프 2115 2001/04/03
6534         Re:Re:빌더에서 PASCAL 이 먹히나요? 도난경보기 2090 2001/04/03
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.