Tôi đang cố gọi các hàm từ một DLL có vẻ như được tạo trong Delphi. Ví dụ về một số chức năng được DLL hỗ trợ là:Python có thể gọi hàm Delphi trong một DLL không?
function oziDeleteWpByName(var name:pansichar):integer;stdcall
Mã Python mà tôi đã viết để truy cập các chức năng trên không hoạt động.
from ctypes import *
libc = cdll.OziAPI
name ='test'
pi = pointer(name)
delname = libc.oziDeleteWpByName
delname(name)
Dường như tôi đang chuyển loại dữ liệu sai cho hàm. Bất kỳ ý tưởng về làm thế nào để làm điều đó phải không?
Cảm ơn nó đã hoạt động. Bây giờ, hãy trợ giúp với chức năng này:
chức năng oziGetOziVersion (var Phiên bản: pansichar; var Dữ liệu: số nguyên): số nguyên; stdcall; Phiên bản OziExplorer được trả lại trong biến Phiên bản.
Bây giờ, làm cách nào để chuyển 'phiên bản var' khi nó cũng sẽ được trả lại.
'var name: pansichar' ngụ ý rằng tham số' name' có thể được sửa đổi và trả về cho người gọi. Liệu chức năng thực sự làm điều đó? Bạn có định đọc nội dung của 'tên' sau khi hàm trả về không? –
Ngoài ra, bạn đang sử dụng phiên bản Python nào? Có thể tạo sự khác biệt cho mã hóa chuỗi. –
vâng, khai báo 'var' đó là tanh. Nếu bạn, người dùng 1138 ... đã viết DLL đó, tại sao bạn làm điều đó? –