Как открыть С++ DLL из Python3

247
09 февраля 2018, 21:18

Написал на с++ dll. Как вызвать ее из python 3 с помощью ctypes?

#include "stdafx.h"
#include "wrap1.h"
#include <stdexcept>
using namespace std;
namespace MathFuncs
{
        double MyMathFuncs::Multiply(double a, double b)
    {
        return a * b;
    }
}
Answer 1

Я пару минут погуглил и пришёл к такому варианту:

  1. Добавляете в исходник

    extern "C" {
        double MathFuncs_Multiply(double a, double b) {
            return MathFuncs::MyMathFuncs::Multiply(a, b);
        }
    }
  2. В python

    from ctypes import CDLL, c_double
    lib = CDLL("MathFuncs.dll")
    func = lib.MathFuncs_Multiply
    func.restype = c_double
    res = func(c_double(2.0), c_double(3.2))

Возможно есть и более изящные решения.

READ ALSO
Memo в Embarcadero C++ Builder 10.2 [требует правки]

Memo в Embarcadero C++ Builder 10.2 [требует правки]

Как создать это Memo в Embarcadero C + + Builder 102 (Проблема наверху rectangular FMX!)

232
Где найти cuda_data и cudpp_config.h? [требует правки]

Где найти cuda_data и cudpp_config.h? [требует правки]

Нужен в программе заголовочный файлcuda_data и cudpp_config

223
Решить задачу на с++ [требует правки]

Решить задачу на с++ [требует правки]

Фирме принадлежат два магазинаИзвестна стоимость товаров, проданных в каждом магазине за каждый день в июле и августе, которая хранится...

174
Сохранение изменений в структуре в файл

Сохранение изменений в структуре в файл

Задача данной части кода - считывание информации из файла в вектор структур, изменение необходимой информации и запись ее обратно в файлОднако...

255