// add.h
#ifndef ADD_H
#define ADD_H
#ifdef __cplusplus
extern "C" {
#endif
_declspec(dllexport) void add(float** a, float** b, float** c, int rows, int cols);
#ifdef __cplusplus
}
#endif
#endif
// add.cpp
#include "add.h"
#ifdef __cplusplus
extern "C" {
#endif
void add(float** a, float** b, float** c, int rows, int cols) {
for (int ri = 0; ri < rows; ++ri) {
for (int ci = 0; ci < cols; ++ci) {
c[ri][ci] = a[ri][ci] + b[ri][ci];
}
}
}
#ifdef __cplusplus
}
#endif
// test.c
#include "../inc/add.h"
#include <malloc.h>
int main() {
// 分配内存并赋值
int rows = 4, cols = 100;
float** a = (float**)malloc(rows * sizeof(float*));
float** b = (float**)malloc(rows * sizeof(float*));
float** c = (float**)malloc(rows * sizeof(float*));
for (int ri = 0; ri < rows; ++ri) {
a[ri] = (float*)malloc(cols * sizeof(float));
b[ri] = (float*)malloc(cols * sizeof(float));
c[ri] = (float*)malloc(cols * sizeof(float));
for (int ci = 0; ci < cols; ++ci) {
a[ri][ci] = ri + ci;
b[ri][ci] = ri * ci;
}
}
// 计算
add(a, b, c, rows, cols);
return 1;
}
注意:要在该项目的属性中设置配置类型为动态库(.dll)
_declspec(dllexport) //用于导出动态库
// 实现C++和C的混合编程
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
}
#endif
代码
完整代码:C/C++、matlab、python:生成c动态库,matlab、python调用
不想使用积分下载的,可以私信邮箱,直接发你