2016-03-10 20 views
0

我有下一個C++的編譯後創建DLL文件如何在C#中調用函數的DLL/Python的

// MathFuncsDll.h 

#ifdef MATHFUNCSDLL_EXPORTS 
#define MATHFUNCSDLL_API __declspec(dllexport) 
#else 
#define MATHFUNCSDLL_API __declspec(dllimport) 
#endif 

namespace MathFuncs 
{ 
    // This class is exported from the MathFuncsDll.dll 
    class MyMathFuncs 
    { 
    public: 
     // Returns a + b 
     static MATHFUNCSDLL_API double Add(double a, double b); 

     // Returns a - b 
     static MATHFUNCSDLL_API double Subtract(double a, double b); 

     // Returns a * b 
     static MATHFUNCSDLL_API double Multiply(double a, double b); 

     // Returns a/b 
     // Throws const std::invalid_argument& if b is 0 
     static MATHFUNCSDLL_API double Divide(double a, double b); 
    }; 
} 

// MathFuncsDll.cpp : Defines the exported functions for the DLL application. 
// 

#include "stdafx.h" 
#include "MathFuncsDll.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; 
    } 
} 

我有dll文件 ,我想打電話給例如ADD功能代碼

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Runtime.InteropServices; 

namespace call_func 
{ 
    class Program 
    { 
     [DllImport("MathFuncsDll.dll", CallingConvention = CallingConvention.Cdecl)] 
     public static extern double MyMathFuncs::Add(double a, double b); 

     static void Main(string[] args) 
     { 
      Console.Write(Add(1, 2)); 
     } 
    } 
} 

但得到這個消息 error img

或Python代碼

Traceback (most recent call last): 
    File "C:/Users/PycharmProjects/RFC/testDLL.py", line 6, in <module> 
    result1 = mydll.Add(10, 1) 
    File "C:\Python27\lib\ctypes\__init__.py", line 378, in __getattr__ 
    func = self.__getitem__(name) 
    File "C:\Python27\lib\ctypes\__init__.py", line 383, in __getitem__ 
    func = self._FuncPtr((name_or_ordinal, self)) 
AttributeError: function 'Add' not found 

請幫忙 我該如何修復這段代碼,並調用例如ADD函數。

謝謝

回答