Tôi có một tệp tiêu đề khai báo một API C cho một số thư viện và tôi muốn tạo một liên kết OCaml cho lib này. Tôi thấy rằng camlidl có thể tạo sơ khai từ một tệp IDL nhưng tôi hiểu không có chuyển đổi tự động từ tệp *.h
thành IDL, vì vậy bây giờ tôi tự hỏi liệu có cách nào khác để tạo ra các nhánh cho các ràng buộc OCaml từ tệp tiêu đề C không?Tạo các nút kết buộc Ocaml từ tệp tiêu đề C
Trả lời
Không có đủ thông tin trong tệp tiêu đề C để viết liên kết cho ngôn ngữ khác. Trong các trường hợp rất đơn giản (ví dụ, tất cả các hàm chỉ lấy số nguyên hoặc các đối số dấu chấm động), có thể, nhưng ngay khi con trỏ tham gia, bạn cần cung cấp thêm thông tin: hàm sẽ đọc từ giá trị trỏ tới, viết cho nó, hoặc cả hai? Phải giao diện cho phép một con trỏ null? Đây có phải là một con trỏ đến một mảng, và kích thước của nó ở đâu? Đây có phải là char*
một con trỏ đến một chuỗi không bị chấm dứt không?
IDL mở rộng khai báo hàm C với chú thích bổ sung để bao gồm tất cả các điểm này. Đó là lý do tại sao camlidl
hoạt động trên IDL và không trực tiếp trên các tiêu đề C. Bạn sẽ không tìm thấy bất cứ điều gì đáng kể ít đau đớn.
Có một cách tiếp cận khác, để tự do chú thích tiêu đề C của bạn bằng các macro có mở rộng trống nhưng cung cấp thông tin loại bổ sung, ví dụ:
int memmove(void ANN_OUT ANN_SIZE(n) ANN_NOT_NULL *dest,
const void ANN_IN ANN_SIZE(n) ANN_NOT_NULL *src,
size_t n);
Chú thích như vậy không được chuẩn hóa, vì vậy nếu bạn đi tuyến đường này, bạn sẽ phải tự viết công cụ của riêng mình. (Tra cứu Cil nếu bạn muốn phân tích cú pháp C.) Tôi khuyên bạn thay vào đó bạn xử lý các khai báo IDL là khai báo chính và tạo các tệp tiêu đề C từ chúng.
Liệu Swig có hữu ích không?
- 1. Tự động tạo tệp C++ từ tiêu đề?
- 2. cách liên kết các tệp tiêu đề bằng C++
- 3. Làm cách nào để tạo các tệp tiêu đề C
- 4. Tạo các Sên từ Tiêu đề?
- 5. sự khác biệt giữa các tệp tiêu đề c (.h) và tệp tiêu đề C++ (.hpp)
- 6. Biên dịch C++ .lib chỉ với các tệp tiêu đề?
- 7. Mục tiêu-c: Nhận ngày tạo tệp
- 8. Mỗi tệp C hoặc C++ có tệp tiêu đề được liên kết không?
- 9. UINavigationBar với các nút làm tiêu đề.
- 10. Tab kết nối WPFMục tiêu tiêu đề
- 11. Cách tạo tệp tiêu đề JNI trong Eclipse
- 12. Các hằng số được khởi tạo trong các tệp tiêu đề Objective-C như thế nào?
- 13. Trích xuất tiêu đề từ tệp PDF?
- 14. Các liên kết lưu loát và tiêu đề UIButton
- 15. C++ Các tệp tiêu đề định nghĩa lại (winsock2.h)
- 16. Các tệp tiêu đề C trong Windows ở đâu?
- 17. Xác định các thuộc tính trong tệp tiêu đề và mục tiêu tệp thực hiện c
- 18. curl: đọc tiêu đề từ tệp
- 19. Tạo Menu và Nút thả xuống của Firefox 4 trên Mẫu Tiêu đề Thanh C#
- 20. Chi phí bao gồm các tệp tiêu đề trong mục tiêu-C
- 21. Có bao nhiêu tệp tiêu đề trong tiêu chuẩn C++?
- 22. Tự động tạo tệp tiêu đề cho tệp nguồn C trong IDE
- 23. Ẩn nút từ thanh tiêu đề trong Cocoa
- 24. Có thể sử dụng frama-c để phân tích tệp tiêu đề không?
- 25. Tạo hai chủ đề trong Mục tiêu-C
- 26. Eclipse CDT C/C++: Bao gồm tệp tiêu đề từ một dự án khác
- 27. inotify C tiêu đề
- 28. Cách tạo các nút thanh tiêu đề có kiểu vỏ trong .NET
- 29. WPF Các tiêu đề cột tùy chỉnh ràng buộc Datagrid ràng buộc
- 30. Cách tạo định nghĩa trống cho tệp tiêu đề