不确定这是否可能。我需要将一个函数从 C 传递到 C++。它不能是函数指针。
我需要调用的 C++ 函数:
template<class Lam>
void parfor(int N, Lam lam) {
lam(i);
}
我想给 parfor 的 C 函数(这里的 ptr 可以是全局指针):
void calc(int num) {
ptr[0] = num;
}
C Main 看起来像这样:
include <ParFor.hpp>
parfor(calc, 1);
我可以将我的函数定义放在标题中。在 C++ 方面,我有一个函数(来自外部库),它采用 C++ lambda 或 C++ 仿函数。它被模板化为 lambda
我目前的想法是将我的 C 函数放在一个文件中,为它们编译 LLVM IR,并以某种方式强制将 clang 生成的 IR 内联到我的 C++ 函数中。C 调用 mycppfunc(mycfunc)。mycppfunc 具有用于 mycfunc 的 LLVM IR,并且能够生成正确的代码。我尝试了这个,但是由于似乎不兼容的 IR,编译器在链接阶段崩溃了。