Я создал файл Python, содержащий функцию, которая возвращает ряд Тейлора порождающей функции рекуррентного отношения. Я хочу запустить эту функцию из программы на C ++. Теперь проблема, с которой я сталкиваюсь, заключается в том, что когда я запускаю файл Python из программы C ++ без импорта каких-либо внешних библиотек (а именно, sympy, поскольку это то, что я использовал в моем файле Python), файл работает нормально и выведет что-то вроде Hello World, если я напишу в файле Python только простые команды, такие как
print('Hello World')
.
Но когда я импортирую sympy, а затем запускаю файл из программы C ++ Я получаю следующую ошибку -
Unhandled exception at 0x79BC85C2 (python37.dll) in merger.exe: 0xC0000005: Access violation reading location 0x00000004. occurred
Ниже приведен код, который я написал -
#include "Python.h"
#include<iostream>
#include<Windows.h>
using namespace std;
int main()
{
Py_Initialize();
PySys_SetPath(L"C:/Users/acer/PycharmProjects/justpractice");
PyObject* pfile = PyImport_ImportModule("derivativecalc");
PyObject* pclass = PyObject_GetAttrString(pfile, "CreatorClass"); < -- Line where the error occurs
Py_Finalize();
return 0;
}
Ниже приведен код в моем файле Python. Я не использую никакие функции, которые я определил до сих пор.
import sympy as sy
from sympy.functions import sin, cos
x = sy.Symbol('x')
f = sin(x)
# Factorial function
def factorial(n):
if n <= 0:
return 1
else:
return n * factorial(n - 1)
# Taylor approximation at x0 of the function 'function'
def taylor(function, x0, n):
i = 0
p = 0
while i <= n:
p = p + (function.diff(x, i).subs(x, x0)) / (factorial(i)) * (x - x0) ** i
i += 1
return p
class CreatorClass:
def creator(self, a1, a0, p, q):
y = sy.Symbol('y')
func1 = ((a0 + (a1 - p * a0)) * y) / (1 - p * y - q * (y ** 2))
return taylor(func1, 0, 4)
print('Hello World')
Я понятия не имею, почему включение некоторых внешних библиотек в мою программу Python влияет на вывод в программе CPP. Я попытался включить папку site-packages в мои Python библиотеки в папку Debug моего проекта в Visual Studio, но безрезультатно.
Я научился встраивать Python в C ++ только сегодня, чтобы вы могли думай обо мне как о супер новичке. Любая помощь будет оценена.