Задать вопрос
@LilaznEnzo

Как передать массив данных (вектор) из dll c++ в python?

Есть массив данных, набор чисел, созданных в файле dll на c++ класса vector. Эти значения нужно передать в python файл для дальнейших с ними манипуляций. Как это сделать не могу понять. В коде, я вроде, передаю вектор в питоновский файл, но питон не может понять что я ему такое передал. Читал, что вроде как можно как-то сделать использую конвертацию vector в numpy, но не понял как это сделать. И, вроде как можно этого добиться, используя boost библиотеку, но тоже не совсем понятно. Подскажите, пожалуйста, как и что нужно написать, сделать, чтобы всё заработало?

Код Python
from ctypes import *
from math import *

Link2 = CDLL(r'./Link2.dll')

class outdata2(Structure):
    _fields_ = ["x", class?]    //Вот тут ничего не написано, т.к. нет такого как c_vector, 
//поэтому я и не знаю как это и на что заменить, чтобы вектор вывести. 
//Такой структурой я выводил float и другие значения, но не массивы.
data2 = outdata2()

Link2.Some2(
                      byref(data2))


Header.h самой dll
#pragma pack (4)
#include <vector>

typedef struct outdata2
{
	std::vector <float> out_x;
};

extern "C" __declspec(dllexport) void Some2(outdata2*);


Dll
#define _USE_MATH_DEFINES

#include <iostream>
#include <math.h>
#include <fstream>
#include <vector>
#include "..\SpiralsCoord\Header.h"

__declspec(dllexport) void Some2(outdata2* data2)
{
	setlocale(LC_ALL, "Russian");
 
        //код, содержащий вектора x1, x2

        data2->out_x.assign(x1.begin(), x2.end());
}
  • Вопрос задан
  • 135 просмотров
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы