|
시온 님이 쓰신 글 :
: 빌더 개발 안내서를 참조하여... 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................
:
: 생각처럼 잘 안되네요..
:
: 문제점을 이해하기 쉽게 자세히 적어주시면 감사하겠습니다. (__)
lib파일이라면 함수형만 써주시면될거같군요
|