我正在使用LLVM编写特定目的语言的编译器。我想为一个已经用C++编写的库添加绑定。我的想法是使用clang -emit-llvm -S abc.c
将库编译为LLVM字节码,并在编译期间链接它。这对于像下面这样的代码非常有效:
// 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;
}
但是这将是许多枯燥无味的工作。有没有办法从我的库源代码中创建有用的字节码?或者有其他方法使该库在我的编译器中可用?