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
[56185] Re:Re:Re:Re:Re:Re:Re:[질문]동적 DLL(폼이 있는)을 불러 폼을 띄우고자 ..합니다.
장성호 [nasilso] 1691 읽음    2009-02-17 14:35
허걱~!

님께서 잘못한것은  FreeLibrary에 있습니다.

DLL에 있는 폼을 종료(free)하지 않은 상태에서 Project1.dll을 FreeLibrary해버리면
당연히 error가 나죠

Form2의 동작 코드가 Dll에 다 있는데 
그놈을 메모리에서 날려버렸으니 에러가 안나면 이상하죠..
(에러가 안나는 경우는 Project1.dll이 한군데 이상 load된 경우...)



그리고 vcl 중복 load문제는 dll 프로젝트 옵션 뿐만 아니라
exe 프로젝트 옵션에도 똑같이 build with runtime package 를 체크해줘야 합니다.
참조 http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tip&no=808

그럼..


라이손레종ㅎ 님이 쓰신 글 :
: extern "C" __declspec(dllexport) void  __stdcall testfunc( TComponent *pParent )
: {
:     Form2=new TForm2(pParent );
:     Form2->Show();
: }
: 이렇게 하니 DLL 생성은 오류 없이 되었습니다.
: 이것만 수정해서 DLL 로드 하여 버튼 클릭하면
: Access violation at address 400058FE in module 'rtl60.bpl'.Read of address 83EC8B25.
: 오류 메시지가 뜹니다.
:
:
: void TestForm::OnClickButton( TObject *Sender )
: {
:     // TestForm 이 메인 Form 이라면...
:      testfunc( this );
: }
:
: 또 위의 내용처럼 아래 이부분을 수정 하시라 해서 따라 해보았습니다.
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
:
:     HMODULE hDll;
:     hDll = LoadLibrary("Project1.dll");
:     if(hDll==NULL)
:     {
:         ShowMessage("Can't load dll");
:         return;
:     }
:     typedef __declspec(dllimport) void (*TestFunc)(void);
:     TestFunc Test;
:
:     Test = (TestFunc)GetProcAddress(hDll,"testfunc");
:     if(Test)
:     {
:         (*Test)(this);  // <----이렇게 하라는 거 맞는지요 ?
:     }
:
:     FreeLibrary(hDll);
:
: }
:
: 이렇게 하니... 안되네요.. ㅜ.ㅜ

+ -

관련 글 리스트
56170 [질문]동적 DLL(폼이 있는)을 불러 폼을 띄우고자 ..합니다. 라이손레종ㅎ 1814 2009/02/17
56173     Re:[질문]동적 DLL(폼이 있는)을 불러 폼을 띄우고자 ..합니다. 장성호 3784 2009/02/17
56179         Re:Re:[질문]동적 DLL(폼이 있는)을 불러 폼을 띄우고자 ..합니다. 라이손레종ㅎ 1547 2009/02/17
56181             Re:Re:Re:[질문]동적 DLL(폼이 있는)을 불러 폼을 띄우고자 ..합니다. 전재득 1473 2009/02/17
56182                 Re:Re:Re:Re:[질문]동적 DLL(폼이 있는)을 불러 폼을 띄우고자 ..합니다. 라이손레종ㅎ 1365 2009/02/17
56183                     Re:Re:Re:Re:Re:[질문]동적 DLL(폼이 있는)을 불러 폼을 띄우고자 ..합니다. 전재득 1393 2009/02/17
56184                         Re:Re:Re:Re:Re:Re:[질문]동적 DLL(폼이 있는)을 불러 폼을 띄우고자 ..합니다. 라이손레종ㅎ 1517 2009/02/17
56186                             Re:Re:Re:Re:Re:Re:Re:[질문]동적 DLL(폼이 있는)을 불러 폼을 띄우고자 ..합니다. 전재득 1515 2009/02/17
56185                             Re:Re:Re:Re:Re:Re:Re:[질문]동적 DLL(폼이 있는)을 불러 폼을 띄우고자 ..합니다. 장성호 1691 2009/02/17
56187                                 Re:Re:Re:Re:Re:Re:Re:Re:휴아~ 답변 감사합니다~ 라이손레종ㅎ 1517 2009/02/17
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.