Tôi có một Thư viện C++ repeater.so
mà tôi có thể tải từ Python trong Linux theo cách sau:Python ctypes không tải thư viện năng động trên Mac OS X
import numpy as np
repeater = np.ctypeslib.load_library('librepeater.so', '.')
Tuy nhiên, khi tôi biên dịch cùng một thư viện trên Mac OS X (Snow Leopard, 32 bit) và nhận repeater.dylib
, và sau đó chạy sau trong Python:
import numpy as np
repeater = np.ctypeslib.load_library('librepeater.dylib', '.')
tôi nhận được lỗi sau:
OSError: dlopen(/mydir/librepeater.dylib, 6): no suitable image found. Did find:
/mydir/librepeater.dylib: mach-o, but wrong architecture
Tôi có phải làm điều gì đó khác để tải thư viện động bằng Python trên Mac OS X không?
Sử dụng 'tệp' đã thực hiện thủ thuật: Tôi đã sửa đổi kiến trúc trong cài đặt trình biên dịch để khớp với cài đặt python và giờ nó hoạt động. Cảm ơn! – nolk
Bạn có đang sử dụng Python do Apple cung cấp không? Nếu vậy, bạn có thể vừa chạy ở chế độ 32 bit như được đề xuất. Nhưng cũng biên dịch lại các tác phẩm. Đây cũng là lý do tại sao các tệp nhị phân trên OS X thường được xây dựng dưới dạng tệp đa kiến trúc (ví dụ: i386, x86_64 và ppc) để các tệp, libs hoặc ứng dụng có thể được sử dụng trên các loại máy khác nhau được hỗ trợ bởi cấp hệ điều hành . –