Итак, у меня есть класс C++, который я переношу на C, поэтому я могу использовать его в Python с использованием ctypes. декларация класса C++:c указатели и ctypes
// Test.h
class Test
{
public:
static double Add(double a, double b);
};
//Test.cpp
#include "stdafx.h"
#include "Test.h"
double Test::Add(double a, double b)
{
return a + b;
}
C обертывание:
// cdll.h
#ifndef WRAPDLL_EXPORTS
#define WRAPDLL_API __declspec(dllexport)
#else
#define WRAPDLL_API __declspec(dllimport)
#endif
#include "Test.h"
extern "C"
{
WRAPDLL_API struct TestC;
WRAPDLL_API TestC* newTest();
WRAPDLL_API double AddC(TestC* pc, double a, double b);
}
//cdll.cpp
#include "stdafx.h"
#include "cdll.h"
TestC* newTest()
{
return (TestC*) new Test;
}
double AddC(TestC* pc, double a, double b)
{
return ((Test*)pc)->Add(a, b);
}
Python скрипт:
import ctypes
t = ctypes.cdll('../Debug/cdll.dll')
a = t.newTest()
t.AddC(a, 2, 3)
Результат t.AddC (а, 2, 3) всегда есть некоторое отрицательное целое число , Проблема с указателем, но я не знаю, в чем проблема. У кого-нибудь есть идеи?
Покажите нам свой полный код на C и C++. – user4759923
Я редактировал вопрос, теперь есть полный код C и C++ – kjrkvc