동적 링크 라이브러리가 어떻게 만들어졌는지(2)

1. def 파일 형식으로 동적 링크 라이브러리 만들기 (기초)


여기를 클릭하여 나의 다른 블로그를 보십시오: def 파일로 동적 링크 라이브러리 만들기
  • 프로세스 1 (1) 새 DLL 프로젝트 이름 만들기 DLL (2) cpp 파일 이름 추가 Dll.cpp가declspec(dllexport)는add와subtract가 에 대한 내보내기 함수임을 나타냅니다stdcall, 독자 자체 테스트 및 관련 자료 조회 가능
  • 
     _declspec(dllexport) int /*_stdcall*/ add(int a, int b)
    {
        return a + b;
    }
     _declspec(dllexport) int /*_stdcall*/  subtract(int a, int b)
    {
        return a - b;
    }
  • 프로세스 2 (1) 새 검사 함수TestDll (2) 추가.cpp 파일 TestDll.cpp(3) Dll1의lib와 dll 파일을TestDll 프로젝트로 복사해야 합니다
  • #include <iostream>
    using namespace std;
    #pragma comment(lib,"Dll.lib")
    //extern   _declspec(dllimport)    ,   _declspec(dllimport)
    //extern add(int a, int b);
    //extern subtract(int a, int b);
    
    _declspec(dllimport) add(int a, int b);
    _declspec(dllimport) subtract(int a, int b);
    #define OK 0
    #define ERR -1
    int main()
    {
        int a = 100, b = 40;
        cout << "add(" << a << "," << b << ")" <<add(a,b)<< endl;
        cout << "subtract(" << a << "," << b << ")" << subtract(a, b) << endl;
        system("pause");
        return OK;
    }

    2.def 파일 형식으로 동적 링크 라이브러리 만들지 않음(진급1)

  • 프로세스 1 (1) 새 DLL 프로젝트 이름 만들기 DLL (2) cpp 파일 이름 추가 Dll.cpp
  • 
     _declspec(dllexport) int /*_stdcall*/ add(int a, int b)
    {
        return a + b;
    }
     _declspec(dllexport) int /*_stdcall*/  subtract(int a, int b)
    {
        return a - b;
    }

    (3) h 파일 이름 지정 Dll을 추가합니다.h지금은 클라이언트에게만 사용되는,TestDll에서 사용하기 때문에가져오기임을 나타내는 declspec(dllimport)
     _declspec(dllimport) int /*_stdcall*/ add(int a, int b);
     _declspec(dllimport) int /*_stdcall*/  subtract(int a, int b);
  • 프로세스 2 (1) 새 검사 함수TestDll (2) 추가.cpp 파일 TestDll.cpp(3) Dll1의lib와 dll 파일을TestDll 프로젝트에 복사해야 합니다(4)#include "*/Dll.h"//를 추가해야 합니다
  • #include <iostream>
    #include "*/Dll.h"//       
    using namespace std;
    #pragma comment(lib,"Dll.lib")
    //extern   _declspec(dllimport)    ,   _declspec(dllimport)
    //extern add(int a, int b);
    //extern subtract(int a, int b);
    
    //_declspec(dllimport) add(int a, int b);
    //_declspec(dllimport) subtract(int a, int b);
    #define OK 0
    #define ERR -1
    int main()
    {
        int a = 100, b = 40;
        cout << "add(" << a << "," << b << ")" <<add(a,b)<< endl;
        cout << "subtract(" << a << "," << b << ")" << subtract(a, b) << endl;
        system("pause");
        return OK;
    }

    3. def 파일 형식으로 동적 링크 라이브러리를 만들지 않음(진급2)

  • 프로세스 1 (1) 새 DLL 프로젝트 이름 만들기 DLL (2) cpp 파일 이름 추가 Dll.cpp
  • #define DLL_API _declspec(dllexport)
    #include "Dll1.h"
    int /*_stdcall*/ add(int a, int b)
    {
        return a + b;
    }
    int /*_stdcall*/  subtract(int a, int b)
    {
        return a - b;
    }

    (3) h 파일 이름 지정 Dll을 추가합니다.h
     #ifdef DLL_API
     #else
     #define DLL_API _declspec(dllimport)
     #endif
     DLL_API int /*_stdcall*/ add(int a, int b);
     DLL_API int /*_stdcall*/  subtract(int a, int b);
  • 프로세스 2 (1) 새 검사 함수TestDll (2) 추가.cpp 파일 TestDll.cpp(3) Dll1의lib와 dll 파일을TestDll 프로젝트에 복사해야 합니다(4)#include "*/Dll.h"//를 추가해야 합니다
  • #include <iostream>
    #include "*/Dll.h"//       
    using namespace std;
    #pragma comment(lib,"Dll.lib")
    //extern   _declspec(dllimport)    ,   _declspec(dllimport)
    //extern add(int a, int b);
    //extern subtract(int a, int b);
    
    //_declspec(dllimport) add(int a, int b);
    //_declspec(dllimport) subtract(int a, int b);
    #define OK 0
    #define ERR -1
    int main()
    {
        int a = 100, b = 40;
        cout << "add(" << a << "," << b << ")" <<add(a,b)<< endl;
        cout << "subtract(" << a << "," << b << ")" << subtract(a, b) << endl;
        system("pause");
        return OK;
    }

    4.def 파일 형식으로 동적 링크 라이브러리를 만들지 않음(진급3)

  • 프로세스 1 (1) 새 DLL 프로젝트 이름 만들기 DLL (2) cpp 파일 이름 추가 Dll.cpp
  • #define DLL_API extern "C" _declspec(dllexport)//  C   
    #include "Dll1.h"
    int /*_stdcall*/ add(int a, int b)
    {
        return a + b;
    }
    int /*_stdcall*/  subtract(int a, int b)
    {
        return a - b;
    }

    (3) h 파일 이름 지정 Dll을 추가합니다.h
     #ifdef DLL_API
     #else
     #define DLL_API extern "C" _declspec(dllimport)
     #endif
     DLL_API int /*_stdcall*/ add(int a, int b);
     DLL_API int /*_stdcall*/  subtract(int a, int b);
  • 프로세스 2 (1) 새 검사 함수TestDll (2) 추가.cpp 파일 TestDll.cpp(3) Dll1의lib와 dll 파일을TestDll 프로젝트에 복사해야 합니다(4)#include "*/Dll.h"//를 추가해야 합니다
  • #include <iostream>
    #include "*/Dll.h"//       
    using namespace std;
    #pragma comment(lib,"Dll.lib")
    //extern   _declspec(dllimport)    ,   _declspec(dllimport)
    //extern add(int a, int b);
    //extern subtract(int a, int b);
    
    //_declspec(dllimport) add(int a, int b);
    //_declspec(dllimport) subtract(int a, int b);
    #define OK 0
    #define ERR -1
    int main()
    {
        int a = 100, b = 40;
        cout << "add(" << a << "," << b << ")" <<add(a,b)<< endl;
        cout << "subtract(" << a << "," << b << ")" << subtract(a, b) << endl;
        system("pause");
        return OK;
    }

    5.def 파일 형식으로 동적 링크 라이브러리 만들지 않음(진급4)

  • 프로세스 1 (1) 새 DLL 프로젝트 이름 만들기 DLL (2) cpp 파일 이름 추가 Dll.cpp
  • #define DLL_API _declspec(dllexport)
    #include "Dll1.h"
    DLL_APPI int /*_stdcall*/ add(int a, int b)
    {
        return a + b;
    }
    DLL_API int /*_stdcall*/  subtract(int a, int b)
    {
        return a - b;
    }
    void Line:: output()
    {
        cout<<"void Line:: output()"<<endl;
    }
    void Line::test()
    {
        cout<<"void Line::test()"<<endl;
    }

    (3) h 파일 이름 지정 Dll을 추가합니다.h
     #ifdef DLL_API
     #else
     #define DLL_API _declspec(dllimport)
     #endif
    int /*_stdcall*/ add(int a, int b);
    int /*_stdcall*/  subtract(int a, int b);
     class DLL_API Line
    {
        publicvoid output();
         void test();
    }
  • 프로세스 2 (1) 새 검사 함수TestDll (2) 추가.cpp 파일 TestDll.cpp(3) Dll1의lib와 dll 파일을TestDll 프로젝트에 복사해야 합니다(4)#include "*/Dll.h"//를 추가해야 합니다
  • #include <iostream>
    #include "*/Dll.h"//       
    using namespace std;
    #pragma comment(lib,"Dll.lib")
    //extern   _declspec(dllimport)    ,   _declspec(dllimport)
    //extern add(int a, int b);
    //extern subtract(int a, int b);
    
    //_declspec(dllimport) add(int a, int b);
    //_declspec(dllimport) subtract(int a, int b);
    #define OK 0
    #define ERR -1
    int main()
    {
        int a = 100, b = 40;
        cout << "add(" << a << "," << b << ")" <<add(a,b)<< endl;
        cout << "subtract(" << a << "," << b << ")" << subtract(a, b) << endl;
        Line line;
        line.output();
        line.test();
        system("pause");
        return OK;
    }

    좋은 웹페이지 즐겨찾기