dll 동적 호출

1090 단어 dll
dll 항목:
//MyDll2.dll

#include "windows.h"

#include "stdio.h"



int _stdcall add(int a,int b){

	return a+b;

}



int _stdcall substract(int a,int b){

	return a-b;

}

//////////////////////////////////////////////////////////////////

//MyDll2.def--      



LIBRARY MyDll2

EXPORTS

add

substract


클라이언트 프로젝트:
//Client.cpp

//...

void CMyDllTestDlg::OnButtonSubstract() 

{

/*

	CString str;

	str.Format("5-3=%d",substract(5,3));

	MessageBox(str);

	*/

	HMODULE hIns = LoadLibrary("MyDll2.dll");

	if(!hIns){

		MessageBox("         ");

		return ;

	}

	typedef int (_stdcall * FUN_ADD)(int,int);

	FUN_ADD add;

	add =(FUN_ADD)GetProcAddress (hIns,"substract");

	if(!add){

		MessageBox("        ");

		return ;

	}

	CString str;

	str.Format("5+3=%d",add(5,3));

	MessageBox(str);

	FreeLibrary(hIns);

}

//...


dll 호출 방식: 동적 불러오기, 스텔스 링크.
암시적 링크도 LoadLibrary로 불러오기 때문에 동적 불러오기 효율이 높고dumpbin -exports*를 사용합니다.dll에서 의존 함수를 볼 수 없지만 프로그래밍이 번거롭습니다.

좋은 웹페이지 즐겨찾기