• Convert console application to dll on Visual Studio


    Go to Project Property Page/Cofniguration Properties

    General/Configuration Type, change as “Dynamic Library(.dll)”

    C/C++/Code Generation/Runtime Library, change as “/MDd”

    C/C++/Preprocessor/Preprocessor Definitions, add macro “YOURDLL_EXPORTS”

    Linker/System/SubSystem, change as “Windows(/Subsystem:windows)”

    Linker/Advanced/Import Library, change as ...$(TargetName).lib

    Create an header contains the export interfaces

    #pragma once
    #ifdef YOURDLL_EXPORTS
    #define YOURDLL_API __declspec(dllexport)
    #else
    #define YOURDLL_API __declspec(dllimport)
    #pragma comment (lib, "YOURDLL.lib")
    #endif

    And then add a dllmain.cpp file contains the allocation and deallocation for this dll
    #include "stdafx.h"
    BOOL APIENTRY DllMain( HMODULE hModule,
    DWORD ul_reason_for_call,
    LPVOID lpReserved
    )
    {
    UNREFERENCED_PARAMETER(hModule);
    UNREFERENCED_PARAMETER(lpReserved);

    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
    break;
    }
    return TRUE;
    }

    YOURDLL_API int Add(int lhs, rhs);
    as the abovev code, the Add function will be explored outside to invoke. If you want to explore an entire class, you should declare a class like this way:
    class YOURDLL_API CTest
    {
    public:
    static int Add(int lhs, rhs);
    };


  • 相关阅读:
    java学习之—栈
    java中的a++与++a的区别
    java学习之—数组的曾删改查
    Mybatis #{ } 和 ${ } 区别
    详解Windows不重启使环境变量修改生效(经典)
    laravel artisan常用命令
    Laravel 出现 No application encryption key has been specified.
    springboot的几种启动方式
    Angular 服务的简单使用
    Angular-1.6 路由 简单使用
  • 原文地址:https://www.cnblogs.com/rogerroddick/p/2963402.html
Copyright © 2020-2023  润新知