我可以使函数"外部"c""吗?
Can I make function `extern "c"`?
我有一些cpp文件,我想用FFI把它们和LuaJit结合起来。
但问题是,我必须为几乎每个函数添加extern "c"
符号,以使FFI能够访问它们。
有没有更简单的方法来做这件事?
多个函数可以放在单个extern "C"
块中。这允许您为每个头文件只输入一次extern "C"
。
extern "C" {
void function1();
void function2();
}
虽然它是不可移植的,但您可以实现一个函数签名并使用名称修改协议生成修改过的名称来查找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);
}
相关文章:
- 调用外部函数,无法指定类型 C++/MVS
- 加载由 MATLAB Coder 生成的带有函数的 DLL,该函数调用外部函数
- add_cuda_library输出:未解析的外部函数
- 外部函数在 main() 上调用时返回分段错误 11.(C++)
- 如何在Windows Media Foundation中获取相机外部函数?
- 内联asm编译器屏障(内存阻塞器)是算作外部函数,还是算作静态函数调用
- antlr cpp target 的标头部分不允许使用具有默认参数的外部函数
- 将多维数组传递给外部"C"函数为 void *
- llvm 调用一个以 char * 作为参数的外部函数
- 将 std::vector<bool> 传递给外部函数
- 如何在类向量中存储/使用外部函数指针
- LLVM - 如何使嵌套函数看到外部函数的变量
- CUDA9.2及以上版本中模板默认参数存在无法解决的外部函数错误
- 宏导入外部函数
- 如何在LLVM Pass中将字符串传递给外部函数
- C++:是否可以区分外部"C"函数和普通函数?
- 从外部函数访问外部结构属性
- 如何将成员声明为指向外部"C"函数的指针?
- C 将外部函数链接为成员函数
- LLVM JIT编译的程序找不到外部函数