C ++로 작성된 플로팅 라이브러리를 래핑하고 있으며 현재 최종 플롯 기능을 작업 중입니다. 나는 imgui-plot을 사용 하고 있으므로 크레딧은 그것을 작성하기 위해 soulthreads로 이동합니다. 즉, 헤더 파일의 모든 구조체를 부모 수준으로 이동 한 다음이를 plotconfig 구조체에 할당하여 코드를 약간 수정했습니다.
다음은 가독성을 위해 편집 된 관련 코드 스 니펫입니다.
imgui-plot.h
struct Values{
const float xs* = nullptr
const float ys* = nullptr
};
struct PlotConfig{
Values values
};
cimgui.pxd
cdef extern from 'imgui-plot.h' namespace 'ImGui':
cdef struct Values:
const float xs*
const float ys*
cdef struct PlotConfig:
Values values
core.pyx
import cimgui
def plot(x_data, y_data):
cdef cimgui.PlotConfig conf
conf.values.xs = x_data
conf.values.ys = y_data
cimgui.Plot(conf)
내가받는 오류
> conf.values.xs = x_data
Cannot convert python object to 'const float *'
x_data를 벡터에 넣고 비 상수로 만들려고했습니다. 나는 이제 오류가 변수가 메모리 위치에 대한 상수 포인터 또는 참조 인 것과 관련이 있고 파이썬의 배열 객체 추상화와 관련이 있음을 깨달았습니다.
어쨌든, 나는 이것에 대한 몇 가지 팁을 정말로 고맙게 생각합니다.
궁금한 사람들에게는 이것들이 나를 위해 일한 것 같습니다. 나는 벡터를 만들고 그 위에 값을 푸시하고 포인터를 첫 번째 값에 할당했습니다.
core.pyx
from libcpp.vector cimport vector
import cimgui
def plot(x_data, y_data):
cdef cimgui.PlotConfig conf
cdef vector[float] x_s
cdef vector[float] y_s
for x in x_data:
x_s.push_back(x)
for y in y_data:
y_s.push_back(y)
conf.values.xs = &x_s[0]
conf.values.ys = &y_s[0]
cimgui.Plot(conf)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다