2010-04-04 14 views
9

Jak wskazuje tytuł, czy istnieją kompilatory/interpretery kodu w formacie C/C++? Piszę aplikację w języku interpretowanym, który zależy od pewnych bibliotek, które są w pełni kompilowalne (nie ma specjalnych flag wskazujących zmiany kodu podczas kompilacji dla określonej platformy), ale są napisane w C i C++. Zamiast wysyłać biblioteki z opcjami n-platform-specific dla każdej platformy, dobrze byłoby wysłać jeden zestaw bibliotek, które są interpretowane przez jednego tłumacza obsługującego platformę.Dowolny C/C++ na natywny kompilator/interpretatory kodu bajtowego?

możliwe i/lub dostępne?

EDIT1: Danym interpretowanym jest język Python, ale mogę również używać Ruby.

+2

Co zinterpretował język? Wiele z tych bardziej popularnych ma przenośne sposoby dodawania rozszerzeń C (i być może C++). –

+1

'llvm-gcc' i' clang' istnieją w LLVM dla tego zadania, myślę. –

+0

Językiem jest python, choć mogę również używać Rubiego. Mogę używać obu lub jednego lub drugiego, wszystko mam diagram, więc jeszcze nie zacząłem. – Matt

Odpowiedz

3

Jakim interpretowanym językiem się posługujesz? Jeśli ma implementację opartą na .NET (na przykład IronPython), możliwe, że użyje go z kompilatorem C++/CLI do wygenerowania kodu bajtowego dla .NET CLR i Mono.

Może to być możliwe, jeśli masz pełną kontrolę nad swoimi bibliotekami C++ tylko.

+0

szczerze nie pomyślał, że robi – Matt

+0

Korzystanie Mono może nie być najbardziej stabilnym sposobem do osiągnięcia tego celu.. Specjalnie dla Pythona, który ma już przenośne sposoby dystrybucji rozszerzeń C. –

+0

Używając standardowego podejścia, kod Pythona jest przenośny, ale biblioteki C/C++ muszą być rekompilowane dla każdej platformy. Standardowe podejście może mieć przewagę nad CLR/Podejście mono, ale nie spełnia "jednego zestawu bibliotek" które są interpretowane przez jeden "specyficzny dla platformy interpreter" wymóg dla bibliotek C/C++. – richj

1

Jeżeli nie jesteś pewien użyciu .NET VM/CLR, a następnie można dać Java VM spróbować z LLJVM (przez LLVM-gcc) i albo Jython lub JRuby.

Powiązane problemy