基本上,我已經編譯了一個寫入程序集的文件; .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的函數。 –
但是這正是你想要的嗎? –
難道你不能創建一個類的實例嗎?包括定義類的頭文件? –