dll 동적 호출
1090 단어 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에서 의존 함수를 볼 수 없지만 프로그래밍이 번거롭습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
LoadLibrary에서 126 오류가 발생하면 원인이되는 파일 이름을 찾는 방법Loadlibrary에서 DLL을 동적으로 로드할 때 로드 실패입니다. 실패한 파일 이름은 알려주지 않습니다. 로드하고자 하는 DLL 자체를 로드할 수 없다면 이야기는 간단하지만, 대상 DLL이 다른 DLL을 로드하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.