[DLL] def 파일을 사용하여 dll에서 내보내기
.def 파일에는 적어도 다음 모듈 정의 문이 포함되어 있어야 합니다.
새 동적 링크 라이브러리 DLL 프로젝트 만들기
1. 정적 프로젝트 MathFucsDll 만들기
win32 프로젝트 선택 -->MathFuncsDll 프로젝트 이름 입력 -> 다음 -> DLL 선택하기;추가 옵션에 대한 빈 항목 -> 을 선택합니다.(또는 추가 옵션을 선택하는 빈 항목을 선택하지 않아도 됩니다. 기본값입니다.)
2. 라이브러리 함수 만들기
//MyMathFuncs.cpp
int nDataBase=1;//
int Add(int a,int b)
{
return (a+b)*nDataBase;
}
int _stdcall Sub(int a,int b)
{
return (a-b)*nDataBase;
}
int _cdecl Multiply(int a,int b)
{
return a*b;
}
3. def 파일 만들기
//MyMathFuncs.def
//LIBRARY EXPORTS , LIBRARY
;
LIBRARY MathFuncsDll
EXPORTS
Add @3
Sub @5
Multiply @1
nDataBase DATA
;nDataBase , (nDataBase);(nDataBase data);(nDataBase @2)
동적 링크 라이브러리를 참조하는 응용 프로그램 만들기
1. 동적 링크 라이브러리를 참조하는 콘솔 응용 프로그램을 만듭니다.
같은 해결 방안에 프로젝트 MyExecRefsDll 추가: win32 컨트롤러 프로그램 선택-> MyExecRefsDll 프로젝트 이름 입력-> 다음-> 컨트롤러 프로그램 선택;추가 옵션에 대한 빈 항목 선택 -> 완료
2. 응용 프로그램에서 동적 링크 라이브러리 기능 사용
프로젝트, 인용->공통속성->프레임워크와 인용->인용 추가->MathFuncsDll의 프로젝트 이름과 프로젝트 디렉터리->확인(가장 간단한 하나)
또는 라이브러리 디렉토리 및 추가 라이브러리 추가: 항목, 속성 -> 커넥터 -> 일반 -> 추가 라이브러리 디렉토리: $(OutDir)
항목, 속성 -> 커넥터 -> 입력 -> 추가 의존 항목:MathFuncsDll.lib;또는 코드에 #pragma comment(lib, "MathFuncsDll.lib")를 추가합니다.
MathFuncsDll.dll은 MyExecRefsDll에 있어야 합니다.같은 디렉터리에 exe 파일
3. 절차
#include "stdafx.h"
#include <iostream>
using namespace std;
extern int _declspec(dllimport) nDataBase;// dll
// , Dll ( )
int Add(int a,int b);
int _stdcall Sub(int a,int b);
int _cdecl Multiply(int a,int b);
int _tmain(int argc, _TCHAR* argv[])
{
nDataBase=2;
cout<<Add(1,2)<<endl;//6
cout<<Sub(3,4)<<endl;//-2
cout<<Multiply(4,5)<<endl;//20
return 0;
}
비교 사용declspec(dllexport) 및 사용.def 파일을 사용하여 Dll 함수의 공통점 내보내기
동일: 항목 만들기와 동적 라이브러리 인용 동일
다름:
정의할 때:.def의 파일(LIBRARY EXPORTS)이 있어야 하고, 다른 하나는 함수 앞에declspec(dllexport)
사용 시:.def는 함수를 사용하기 전에 함수 성명이 있어야 하고 을 사용해야 한다declspec(dllexport)의 헤더 파일 추가
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.