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
[67098] dll 정적 로드관련해서..
시온 [] 1142 읽음    2012-05-02 21:01
빌더 개발 안내서를 참조하여... dll 정적 로드를 테스트 하려고 했으나.. 원활하게 진행이 안되서 도움을 얻고자 글을 씁니다..

안내서에서는..

C++Builder 애플리케이션이 로드될 때 DLL을 정적으로 로드하려면 연결 시 DLL의 임포트 라
이브러리 파일을 C++Builder 애플리케이션에 연결합니다. 임포트 라이브러리를 C++Builder
애플리케이션에 추가하려면 Project|Add를 클릭하고 추가할 .LIB 파일을 선택하십시오.
그러면 해당 DLL의 엑스포트된 함수를 애플리케이션에서 사용할 수 있게 됩니다. 다음과 같
이 __declspec (dllimport) 변경자를 사용하여 애플리케이션이 사용하는 DLL 함수의 프로
토타입을 만듭니다.
__declspec(dllimport) return_type imported_function_name(parameters);

이런식으로 사용하라고 적혀있었습니다..

* DLL 코딩 (Project1.dll, Project1.lib)

#pragma hdrstop
#pragma argsused

extern "C" int _libmain(unsigned long reason)
{
    return 1;
}
extern "C" __declspec(dllexport) int changeValue(int value)
{
    return value * value;
}

* 호출 (Project|Add -> Project1.lib 추가했음)

extern "C" __declspec(dllimport) int changeValue(int value);
void __fastcall TForm1::Button3Click(TObject *Sender)
{
    ShowMessage(IntToStr(changeValue(6)));
}

버튼을 클릭하면 Access violation at address 00000000. Read of address 00000000................

생각처럼 잘 안되네요..

문제점을 이해하기 쉽게 자세히 적어주시면 감사하겠습니다. (__)

+ -

관련 글 리스트
67098 dll 정적 로드관련해서.. 시온 1142 2012/05/02
67100     Re:dll 정적 로드관련해서.. aaa 1103 2012/05/02
67099     Re:dll 정적 로드관련해서.. aaa 1330 2012/05/02
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.