基本上,我已经编译了一个写入程序集的文件; .obj file
。它有一个导出功能f
。在C++中,我编写了一个类,并希望使用导出的函数f
作为成员函数。C++链接一个extern函数作为成员函数
如果它被用作一个全局函数,我知道只写extern "C" f()
。但是,这不适用于成员函数,至少我没有弄清楚如何去做。
那么,我该怎么做呢?
注意:函数f
写入正确。即它考虑到了指针等,它应该在汇编级别正确工作。
基本上,我已经编译了一个写入程序集的文件; .obj file
。它有一个导出功能f
。在C++中,我编写了一个类,并希望使用导出的函数f
作为成员函数。C++链接一个extern函数作为成员函数
如果它被用作一个全局函数,我知道只写extern "C" f()
。但是,这不适用于成员函数,至少我没有弄清楚如何去做。
那么,我该怎么做呢?
注意:函数f
写入正确。即它考虑到了指针等,它应该在汇编级别正确工作。
如果函数是作为一个自由函数编写的,那么您将不得不按照您习惯的方式将其声明为自由函数。正如你不能建立一个图书馆void foo()
,然后以某种方式声明它为void bar()
并希望它工作,你不能采取免费的功能,并将其变成一个成员函数。你可以做什么,虽然是加内嵌转发到您的类像这样:
struct S;
extern "C" void f(S *);
struct S {
void f() {
using ::f;
f(this);
}
};
这是你能做的最好的,据我所知。
我宁愿调用':: f(this)'。更容易理解和维护。 –
@JohnDibling:在这种情况下,要么工作正常,但我更喜欢从不调用限定ADL的函数。 –
但是这正是你想要的吗? –
难道你不能创建一个类的实例吗?包括定义类的头文件? –