Để gọi từ perl đến C, thường biên dịch một thư viện chia sẻ, không tĩnh, từ mã c, sau đó tải nó vào trình thông dịch perl sử dụng mô-đun XSLoader
hoặc DynaLoader
.
Để sau đó có thể gọi mã C từ không gian perl có nhiều cách. Một trong những phổ biến nhất là viết một cái gì đó gọi là XSUB
s, trong đó có một giao diện perl-side, bản đồ các cuộc gọi perl-ước để C gọi-công ước, và gọi các chức năng C. Những XSUB này thường cũng được liên kết trong thư viện được chia sẻ sẽ được tải vào perl và được viết bằng một ngôn ngữ có tên là XS, được ghi lại rộng rãi trong perlxs và perlxstut.
Ngoài ra còn có các cách khác để xây dựng lớp trình bao bọc đó, giống như các trình tạo mã XS khác nhau, cũng như SWIG. Nhưng bạn cũng có thể gọi trực tiếp đến các hàm C bằng cách sử dụng NCI
. Perl cũng có rất nhiều trong số đó. Các P5NCI
là một ví dụ về những người, các mô-đun ctypes phát triển trong chương trình năm nay của Google Summer of Code là một.
Một kỹ thuật liên quan khác có lẽ nên được đề cập ở đây là Inline::C
và các mô-đun khác của dòng Inline. Chúng cho phép bạn viết mã bằng các ngôn ngữ khác trực tiếp trong perl và gọi nó. Dưới mui xe Inline :: C chỉ xây dựng mã XS và tải kết quả của nó vào trình thông dịch.
[Làm cách nào để truy cập tệp thư viện .a trong Perl?] (Http: // stackoverflow.com/q/3733346) – daxim
Nếu bạn chỉ muốn chạy một số mã C từ perl, chỉ cần biên dịch nó như là một chương trình C độc lập và gọi nó trên dòng lệnh có thể làm việc :) Hoặc có thể một cái gì đó như gearman có thể hữu ích .. –