• windows 创建和调用 动态库,静态库


    preview

    /MD, /MT, /LD (Use Run-Time Library)

    windows创建和调用静态库

    Walkthrough: Create and use a static library

    
    
    // MathFuncsLib.h
    
    namespace MathFuncs
    {
        class MyMathFuncs
        {
        public:
            // Returns a + b
            static double Add(double a, double b);
    
            // Returns a - b
            static double Subtract(double a, double b);
    
            // Returns a * b
            static double Multiply(double a, double b);
    
            // Returns a / b
            static double Divide(double a, double b);
        };
    } 
    
    // MathFuncsLib.cpp
    // compile with: cl /c /EHsc MathFuncsLib.cpp
    // post-build command: lib MathFuncsLib.obj
    
    #include "MathFuncsLib.h"
    
    #include <stdexcept>
    
    using namespace std;
    
    namespace MathFuncs
    {
        double MyMathFuncs::Add(double a, double b)
        {
            return a + b;
        }
    
        double MyMathFuncs::Subtract(double a, double b)
        {
            return a - b;
        }
    
        double MyMathFuncs::Multiply(double a, double b)
        {
            return a * b;
        }
    
        double MyMathFuncs::Divide(double a, double b)
        {
            return a / b;
        }
    }
    
    

    调用静态库

    // MyExecRefsLib.cpp
    // compile with: cl /EHsc MyExecRefsLib.cpp /link MathFuncsLib.lib
    
    #include <iostream>
    
    #include "MathFuncsLib.h"
    
    using namespace std;
    
    int main()
    {
        double a = 7.4;
        int b = 99;
    
        cout << "a + b = " <<
            MathFuncs::MyMathFuncs::Add(a, b) << endl;
        cout << "a - b = " <<
            MathFuncs::MyMathFuncs::Subtract(a, b) << endl;
        cout << "a * b = " <<
            MathFuncs::MyMathFuncs::Multiply(a, b) << endl;
        cout << "a / b = " <<
            MathFuncs::MyMathFuncs::Divide(a, b) << endl;
    
        return 0;
    }
    

    windows创建和调用动态库

    // MathLibrary.h - Contains declaration of Function class  
    #pragma once  
    
    #ifdef MATHLIBRARY_EXPORTS  
    #define MATHLIBRARY_API __declspec(dllexport)   
    #else  
    #define MATHLIBRARY_API __declspec(dllimport)   
    #endif  
    
    namespace MathLibrary  
    {  
        // This class is exported from the MathLibrary.dll  
        class Functions  
        {  
        public:  
            // Returns a + b  
            static MATHLIBRARY_API double Add(double a, double b);  
    
            // Returns a * b  
            static MATHLIBRARY_API double Multiply(double a, double b);  
    
            // Returns a + (a * b)  
            static MATHLIBRARY_API double AddMultiply(double a, double b);  
        };  
    }  
    
    // MathLibrary.cpp : Defines the exported functions for the DLL application.  
    // Compile by using: cl /EHsc /DMATHLIBRARY_EXPORTS /LD MathLibrary.cpp  
    
    #include "stdafx.h"  
    #include "MathLibrary.h"  
    
    namespace MathLibrary  
    {  
        double Functions::Add(double a, double b)  
        {  
            return a + b;  
        }  
    
        double Functions::Multiply(double a, double b)  
        {  
            return a * b;  
        }  
    
        double Functions::AddMultiply(double a, double b)  
        {  
            return a + (a * b);  
        }  
    }  
    
    

    调用动态库

    // MathClient.cpp : Defines the entry point for the console application.  
    // Compile by using: cl /EHsc /link MathLibrary.lib MathClient.cpp  
    
    #include "stdafx.h"  
    #include <iostream>  
    #include "MathLibrary.h"  
    
    using namespace std;  
    
    int main()  
    {  
        double a = 7.4;  
        int b = 99;  
    
        cout << "a + b = " <<  
            MathLibrary::Functions::Add(a, b) << endl;  
        cout << "a * b = " <<  
            MathLibrary::Functions::Multiply(a, b) << endl;  
        cout << "a + (a * b) = " <<  
            MathLibrary::Functions::AddMultiply(a, b) << endl;  
    
        return 0;  
    }  
    
    
  • 相关阅读:
    dede图片横向滚动
    dede各种运用[转]
    PROFIBUS-DP现场总线的结构及应用
    51单片机的中断优先级及中断嵌套
    WPF里面制作圆角文本框
    【转】什么叫51单片机最小系统
    【转】(C#)OPC客户端源码
    路漫漫其修远兮,吾要上下左右前后而求索
    二叉树创建为什么用二级指针
    无向图的邻接表创建
  • 原文地址:https://www.cnblogs.com/scotth/p/9572569.html
Copyright © 2020-2023  润新知