动态库,只导出结构

xiaoxiao2021-02-28  127

头文件:// MathFuncsDll.h         // Returns a + b          __declspec(dllexport) double Add(double a, double b);         // Returns a - b          __declspec(dllexport) double Subtract(double a, double b);         // Returns a * b          __declspec(dllexport) double Multiply(double a, double b);         // Returns a / b         // Throws DivideByZeroException if b is 0

         __declspec(dllexport) double Divide(double a, double b);

cpp:

// MathFuncsDll.cpp // compile with: /EHsc /LD #include "MathFuncsDll.h" #include <stdexcept> using namespace std;     double Add(double a, double b)     {         return a + b;     }     double Subtract(double a, double b)     {         return a - b;     }     double Multiply(double a, double b)     {         return a * b;     }     double Divide(double a, double b)     {         if (b == 0)         {             throw new invalid_argument("b cannot be zero!");         }         return a / b;     }

测试用例:// MyExecRefsDll.cpp // compile with: /EHsc /link MathFuncsDll.lib #include <iostream> #include "MathFuncsDll.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; }

转载请注明原文地址: https://www.6miu.com/read-45693.html

最新回复(0)