xeus-cling
调用 C 代码#
直接内联 C 代码#
// 使用 extern "C" 包裹 C 代码
extern "C" {
// C 语言函数定义
int add(int a, int b) {
return a + b;
}
}
// 在 C++ 中调用
int result = add(3, 4);
result // 在 Notebook 中显示结果
7
调用预编译的 C 库#
创建 C 头文件 mylib.h
%%file include/mylib.h
#ifndef MYLIB_H
#define MYLIB_H
int multiply(int a, int b);
#endif
Overwriting include/mylib.h
创建 C 源文件 mylib.c
:
%%file src/mylib.c
#include "mylib.h"
int multiply(int a, int b) {
return a * b;
}
Overwriting src/mylib.c
编译为共享库:
!gcc -shared -fPIC -o .temp/libmymath.so src/mylib.c -Iinclude
在 xeus-cling
中调用:
// 加载动态库
#pragma cling add_library_path(".temp") // 指定库路径
#pragma cling load("mymath") // 加载 libmymath.so
// 声明 C 函数
extern "C" {
int multiply(int a, int b);
}
// 调用函数
multiply(5, 6) // 输出 30
30