[英]Can I make one C wrapper for any C++ vector that could go in a Extern C
[英]Can I make function `extern "c"`?
我有一些 cpp 文件,我想使用 FFI 將它們與 LuaJit 結合起來。
但問題是,我必須為幾乎每個函數添加extern "c"
符號,以使 FFI 能夠訪問它們。
有沒有更簡單的方法來完成這項工作?
幾個函數可以放在一個extern "C"
塊中。 這允許您為每個頭文件只鍵入一次extern "C"
。
extern "C" {
void function1();
void function2();
}
雖然它是不可移植的,但您可以實現一個函數簽名並使用名稱修飾協議生成Mangled 名稱,以查找 FFI 的符號名稱。
Linux 上的 Gcc 和 Clang 使用 Itanium C++ ABI 名稱修改規則,可以在此處找到。
在 Windows 上,MSVC 使用未記錄的名稱修改方案。
是的。 定義一個簡單的、最小的包裝 API 並將其導出:
// NOTE: Exported functions do heavy parley and medical-research leveraging C++ under the hood (and only and the hood).
extern "C" {
void achieve_world_peace(void);
void treat_cancer(void);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.