VS2010 에서 dll 생성 방법

2980 단어 C 언어
1. 먼저 dll 생성 프로젝트를 만듭니다. VS2010을 켜면 두 가지 과정으로 dll 프로젝트를 만듭니다. MFC DLL 기반과 Win32 컨트롤러 기반 응용 프로그램은 Win32 컨트롤러 기반으로 만듭니다.
a. 파일 - 신규 - 프로젝트(프로젝트 이름은 simple Dll) - Visual C++ - Win32 - Win32 콘솔 응용 프로그램 선택
b. 다음 단계는 다음 그림에서 프로그램 유형이 DLL을 선택하는데 특별한 필요 없이 빈 프로젝트를 선택하면 프로젝트가 완성됩니다.
2. 헤드 파일 정의: 항목에 헤드 파일 SimpleDll을 추가합니다.h 내부에 다음 코드를 추가합니다.
#ifndef _DLL_API  
#define _DLL_API _declspec(dllexport)  
#else  
#define _DLL_API _declspec(dllimport)  
#endif

#include
#include 
#include 
#include 

_DLL_API int add(int x, int y); //     
_DLL_API const wchar_t* getPlayUrl(const wchar_t* mgrIp, long mgrPort, long materialId);
_DLL_API const char* getUrl(const char* mgrIp, long mgrPort, long materialId);

3. 원본 파일 정의: 프로젝트에 해당하는 원본 파일 SimpleDll을 추가합니다.cpp 다음은 이 원본 파일에서 함수를 정의하고 내부에 다음과 같은 코드를 추가합니다.
#include "SimpleDLL.h"


int add(int x, int y)
{
	return x+y;
}

const wchar_t* getPlayUrl(const wchar_t* mgrIp, long mgrPort, long materialId)
{
	static wchar_t url[260] = { 0 };
	wcscpy_s(url, L"http://  ");
	wcscat_s(url, mgrIp);
	wcscat_s(url, L":");
	wchar_t szPort[20] = { 0 };
	_ltow_s(mgrPort, szPort, 10);
	wcscat_s(url, szPort);
	return url;
}

const char* getUrl(const char* mgrIp, long mgrPort, long materialId)
{
	static char url[260] = { 0 };
	strcpy_s(url, "http://  ");
	strcat_s(url, mgrIp);
	strcat_s(url, ":");
	char szPort[20] = { 0 };
	_ltoa_s(mgrPort, szPort, 10);
	strcat_s(url, szPort);
	return url;
}

4. 컴파일 통과, dll 생성: 여기 작은 제안이 있습니다. dll 프로젝트는exe를 생성하지 않고 API를 실시간으로 테스트할 수 없기 때문에 일반적인 빈 프로젝트에서 API를 통과한 함수체 코드를 디버깅하고 테스트한 다음에 dll 프로젝트를 직접 컴파일하여 통과시키는 것이 더 편리하고 신뢰할 수 있습니다.본론으로 돌아가면 dll 프로젝트를 컴파일한 후에 유용한 것은Simple Dll입니다.h-헤드 파일 및 Debug 디렉토리에서 새로 생성된 SimpleDll.dll 및 SimpleDll.lib 파일,
5. dll 호출: 우리가 방금 생성한 dll을 테스트하기 위해 새로운 프로젝트 mytest를 만듭니다.선언 SimpleDll을 포함합니다.h 헤더 파일, 정의된 인터페이스를 저장합니다.단순Dll.dll 파일을 새 프로젝트 Debug 폴더에 넣습니다. (.exe가 실행될 때 호출해야 합니다. 새 프로젝트가 컴파일되지 않으면 Debug 폴더가 없습니다. 컴파일된 후에 이 폴더가 있으면 dll 파일을 넣습니다.)SimpleDll.lib 파일은 원본 파일과 헤더 파일과 같은 경로에 놓입니다. (컴파일할 때 필요합니다.) 다음은.lib 자원을 프로젝트에 추가하는 두 가지 방법입니다.
한 가지 방법은 Simple 에 항목 등록 정보 - 링크 - 입력에 "종속 추가"를 추가하는 것입니다.Dll.lib 파일 (물론 여기에 설정하지 않은 것도 컴파일에 성공한 적이 있지만 권장하지 않음)다른 호출 방법은 새 프로젝트 메인 프로그램에 다음 명령을 추가하면 의존항을 설정할 필요가 없다는 것이다.
#pragma comment(lib, "Simple_Dll.lib") //  lib     

6. 테스트
#include "SimpleDll.h" //       
#pragma comment(lib, "Simple_Dll.lib") //  lib     
#include 
#include 

int main()
{
	setlocale(LC_ALL, "chs"); //            ,            
	wprintf(L"getPlayUrl: %s\r
", getPlayUrl(L"127.0.0.1", 10087, 1)); printf("getUrl: %s\r
", getUrl("127.0.0.1", 10087, 1)); system("pause"); return 0; }

좋은 웹페이지 즐겨찾기