VS2010 에서 dll 생성 방법
2980 단어 C 언어
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;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 언어 체인 시계는 뱀을 탐식하는 작은 게임을 실현한다본고의 실례는 여러분에게 C 언어 체인표가 뱀 탐식 게임을 실현하는 구체적인 코드를 공유하여 참고하도록 하였으며, 구체적인 내용은 다음과 같다. 프로젝트 이름: 뱀놀이 운영 환경: Linux 프로그래밍 언어: C 언...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.