Mam plik nagłówkowy, który deklaruje C API dla pewnej biblioteki i chciałbym utworzyć wiązania OCaml dla tej biblioteki. Zauważyłem, że camlidl może tworzyć kody pośredniczące z pliku IDL, ale jak rozumiem, nie ma automatycznej konwersji z pliku *.h
na IDL, więc teraz zastanawiam się, czy istnieje inny sposób generowania kodu pośredniczącego dla wiązań OCaml z pliku nagłówkowego C?Generowanie wiązań programu Ocaml z pliku nagłówkowego C
Odpowiedz
W pliku nagłówkowym C jest za mało informacji, aby zapisać powiązania dla innego języka. W bardzo prostych przypadkach (na przykład, wszystkie funkcje przyjmują tylko liczby całkowite lub zmiennoprzecinkowe), jest to możliwe, ale gdy tylko zaangażują się wskaźniki, musisz podać więcej informacji: czy funkcja będzie odczytywana ze wskazanej wartości, napisz do tego, czy do obu? Czy interfejs musi zezwalać na zerowy wskaźnik? Czy w rzeczywistości jest to wskaźnik do tablicy i gdzie jest rozmiar? Czy to char*
jest wskaźnikiem do zakończonego znakiem zero łańcucha?
IDL rozszerza deklaracje funkcji C o dodatkowe adnotacje, aby objąć wszystkie te punkty. Dlatego camlidl
działa na IDL, a nie bezpośrednio na nagłówkach C. Nie znajdziesz niczego znacznie mniej bolesnego.
Istnieje jeszcze inne podejście, które polega na swobodnym przypisywaniu nagłówków C makrom, które mają puste rozwinięcie, ale dostarczają dodatkowych informacji o typie, np.
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);
Takie adnotacje nie są wystandaryzowane, więc jeśli wybierzesz tę trasę, musisz napisać własne narzędzia. (Jeśli chcesz przetworzyć kod C, spójrz na Cil). Zamiast tego polecam traktować deklaracje IDL jako podstawowe i generować z nich pliki nagłówkowe C.
Czy pomocna byłaby Swig?
- 1. Automatyczne tworzenie jednostki interfejsu Delphi/Freepascal z pliku nagłówkowego C
- 2. Uzyskiwanie dostępu do pliku nagłówkowego
- 3. Vim C++ generuje plik źródłowy na podstawie pliku nagłówkowego
- 4. Czy wskazówki Eclipse Hover wyświetlają komentarze Doxygen z pliku nagłówkowego?
- 5. Najlepszy sposób na programowe sprawdzenie istnienia pliku nagłówkowego?
- 6. Inteligentne narzędzie (dodatek?) Do tworzenia ciała klasy z pliku nagłówkowego
- 7. Generowanie programu z ładną drukarką automatycznie
- 8. Generowanie pliku PDF z OpenXml
- 9. Generowanie pliku Excel z HTML
- 10. brakuje pliku nagłówkowego sql.h, chociaż jest zainstalowany unixODBC
- 11. Generowanie pliku dźwiękowego z dźwiękiem 15Khz
- 12. Jak mogę wywołać funkcje OCaml z programu Python?
- 13. Pierwsze kroki z programowaniem wiązań
- 14. VBA - Generowanie pliku Excel z Access (QueryTable)
- 15. Jak przyspieszyć generowanie plików Word z C#?
- 16. generowanie formatu pliku a.out z gcc
- 17. Pingowanie z programu C/C++
- 18. Visual Studio - Generowanie UML z projektu C++
- 19. Generowanie pliku PDF w .NET
- 20. Włączanie sprawdzania pliku nagłówkowego cpp za pomocą syntaktycznego w vim
- 21. Maven generowanie pliku pom
- 22. Generowanie losowego pliku binarnego
- 23. Generowanie unikatowej nazwy pliku
- 24. Generowanie pliku CSV w ASP.Net
- 25. Program Visual Studio nie może zawierać pliku nagłówkowego.
- 26. Korzystanie z wiązań xmlbeans dla cxf wsdl2java
- 27. Jak skompilować i połączyć pliki obiektów w C++ przy użyciu tego samego pliku nagłówkowego?
- 28. Generowanie pliku XML z danych modelu
- 29. Generowanie obrazu kształtu fali z pliku audio
- 30. Generowanie pliku wojny z katalogu webapp tomcat