Я пишу компилятор для специального языка в LLVM. Я хочу добавить привязки для библиотеки, которая уже написана на C ++. Мои идея состоит в том, чтобы скомпилировать библиотеку в байт-код LLVM (используя clang -emit-llvm -S abc.c
) и связать ее во время компиляции. Это хорошо работает для кода типа
// lib.c
int f() {
return 123;
}
. Но части библиотеки написаны например
// A.cc
class A {
public:
int f() { return 123; }
};
, что приводит к пустым файлам байт-кода. Я знаю, что могу исправить это, разделив реализацию:
// A.cc
class A {
public:
int f();
};
int A::f() {
return 123;
}
Но это будет утомительно. Есть ли способ создать полезный байт-код из источников моей библиотеки, поскольку они есть? Или любой другой способ сделать библиотеку доступной в моем компиляторе?