|
빌더 개발 안내서를 참조하여... 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................
생각처럼 잘 안되네요..
문제점을 이해하기 쉽게 자세히 적어주시면 감사하겠습니다. (__)
|