Bir DLL çağıran bir çalışma python 2.7 programım var. Ben betiği python 3.2'ye aktarmaya çalışıyorum. DLL çağrısı çalışıyor gibi görünüyor (yani arama sırasında hata yok), ancak döndürülen veriler anlamlı değil.Python 2 ve 3 arasındaki klişelerdeki farklar
Sadece aşağıdaki durumlarda yararlı olabilir: - Arama üç argüman alır: iki int (giriş) ve bir ushort dizisine (çıkış) bir işaretçi.
Hem python hem de numpy dizilerini başarıyla kullanmayı denedim.
Python 2.7 ve 3.2 arasındaki farklar kimseye saygılı sayılabilir mi? peşin
DÜZENLEME İşte
yılında
sayesinde bazı örnek kodudur. DLL, bu yüzden kodu yok ben tesirli.
void example (int width, int height, unsigned short* pointer)
piton kodudur:
width, height = 40, 100
imagearray = np.zeros((width,height), dtype=np.dtype(np.ushort))
image = np.ascontiguousarray(imagearray)
ptrimage = image.ctypes.data_as(ct.POINTER(ct.c_ushort))
DLL.example(width, height, ptrimage)
Bu piton 2.7 çalışır ancak 3.2 Ama C başlığını var. ctypes değişiklikler yalnızca Cedric tarafından işaret ise
DÜZENLEME 2
, bu 3.2 çalışmaz python mantıklı değil. Bu yüzden tekrar kodlara baktığımda, söz ettiğim işlevden önce çağrılan bir hazırlık işlevi olduğunu gördüm. imzadır: Sorun Python dize işleme değişikliği kaynaklandığını mümkün mü
table = str(aNumber)
DLL.prepare(table)
: python'da
void prepare(char *table)
, ben tarafından çağırıyorum?
Ben hiç bir farkların farkında değilim. Bazı kodları görmemiz gerektiğini düşünüyorum. –