DLL 작성 및 호출(기본)

2651 단어 dll
다른 사람이 쓴 동적 라이브러리를 계속 호출했는데 도대체 무엇이 동적 라이브러리인지 모르겠다. 오늘은 할 일이 없으면 스스로 VC6를 사용한다.0 (순수 연습, 고수는 보지 마라)라고 써라. 소감:Code wins arguments.코드가 웅변보다 낫다!FaceBook
매우 간단하다. 첫째, 동적 라이브러리 새로 만들기;2. 자신이 쓴 동적 라이브러리(두 가지 방식)를 호출한다.
1. vc6 새 동적 링크 라이브러리 프로젝트(FirstDemo)
1. 헤더 파일(FD.h)
    /*      */
extern "C" _declspec(dllexport) int Sum(int a,int b);//  
extern "C" _declspec(dllexport) int Max(int a,int b);//    

2, Cpp 파일(FD.cpp)
 

 #include "FD.h"
/*      */
extern "C" _declspec(dllexport) int Sum(int a,int b){
	return a+b;
}
extern "C" _declspec(dllexport) int Max(int a,int b){
	if(a>b) return a;
	else return b;
} 

2, vc6 새 테스트 생성의FirstDemo.dll의 Win32 Console Application 엔지니어링(TestDll)
/* 두 가지 방법으로 테스트*/
1. 헤더 파일(YSDY.h) - 암시적 호출 테스트
    /**
 *        dll,   xxx.dll  xxx.lib    Debug     。  #pragma comment(lib,"./Debug/xxx.lib")
 *     :           ,  dll          ,    。  ......
 */
#pragma comment(lib, "./Debug/FirstDemo.lib")
int testYS();

2, Cpp 파일(YSDY.cpp) - 암시적 호출 cpp
#include <windows.h>
#include <iostream.h>
/*        dll   ,      dll    */
extern "C" _declspec(dllimport) int Sum(int a,int b);
int testYS(){
	int c=Sum(4,8);//   。
	cout<<c<<endl;
	return 0;
}

3. 헤더 파일(XSDY.h) - 호출 테스트 표시
int test();

4, Cpp 파일(XSDY.cpp) - 호출 cpp 표시
#include <iostream.h>
#include <windows.h>

/**
 * dll          
 *           dll
 */
int test(){
	typedef int(*pSum)(int a,int b);//       pSum
	pSum sum=NULL;
	HINSTANCE hDLL=NULL;
	hDLL=LoadLibrary("FirstDemo.dll");//       FirstDemo.dll ,       
	sum=(pSum)GetProcAddress(hDLL,"Sum");  //      (  )
	if(sum){
		int A=sum(2,7);
		cout<<A<<endl;

	}
	FreeLibrary(hDLL);//  FirstDemo.dll  ;
	return 0;
}

5. 입구main
#include <windows.h>
#include <iostream.h>
#include "XSDY.h"
#include "YSDY.h"

/**
 *      
 */
void main(void){
	test();//dll       
	testYS();//    
}

코드: 첨부 파일에 두 개의 프로젝트가 있습니다. 첫 번째는 dll 프로젝트이고, 두 번째는 dll를 호출하는 테스트 프로젝트입니다.
너무 늦었어, 잤어...

좋은 웹페이지 즐겨찾기