基本上,我已经编译了一个写成汇编的文件; .obj file
。它有一个导出函数f
。在C ++中,我编写了一个类,并希望将导出的函数f
用作成员函数。
如果它被用作全局函数,我知道只需要写extern "C" f()
。但是,这对成员函数不起作用,至少我没弄明白该怎么做。
那么,我该怎么办?
注意:函数f
已正确写入。即它考虑了this
指针等。它应该在汇编级别正常工作。
答案 0 :(得分:4)
如果函数是作为自由函数编写的,则必须按照习惯的方式将其声明为自由函数。就像你不能用void foo()
构建一个库然后以某种方式将其声明为void bar()
并期望它工作一样,你不能使用自由函数并将其转换为成员函数。但是,你可以做的是在你的类中添加一个内联转发器,如下所示:
struct S;
extern "C" void f( S * );
struct S {
void f() {
using ::f;
f(this);
}
};
据我所知,这是你能做的最好的事情。