簡體   English   中英

我可以制作函數`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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM