C++如何调用C
2013-07-04 16:20
369 查看
C++程序调用C程序时,会出现编译错误,下面给出解决该问题的实例。
//MathFun.h
#ifndef MATHFUN_H
#define MATHFUN_H
#ifdef __cplusplus
extern "C"{
#endif
#include <assert.h>
/*
* 函数名:matMult
* 功能:实现两矩阵相乘。
* 参数:
* double fstMat[] - 存放矩阵A的元素
* double sndMat[] - 存放矩阵B的元素
* int fstRows - 矩阵A与乘积矩阵C的行数
* int rowsCols - 矩阵A的列数,矩阵B的行数
* int sndCols - 矩阵B与乘积矩阵C的列数
* double destMat[] - 返回乘积矩阵C=A*B的元素
* 返回值:void
* 作者:LYC
* 日期:2013-07-04
*/
void matMult(double fstMat[], double sndMat[], int fstRows, int rowsCols, int sndCols, double destMat[]);
#ifdef __cplusplus
};
#endif
#endif
//MathFun.c文件(注意是.c文件)
#include "MathFun.h"
void matMult(double fstMat[], double sndMat[], int fstRows, int rowsCols, int sndCols, double destMat[])
{
int i,j,t;
for (i=0; i<fstRows; i++) //对应destMat的行
{
for (j=0; j<sndCols; j++) //对应destMat的列
{
for (t=0; t<rowsCols; t++) //求和
{
destMat[i*sndCols + j] = fstMat[i*rowsCols + t] * sndMat[t*sndCols + j];
}
}
}
}
//main.c文件(注意是.c文件)
//MathFun.h
#ifndef MATHFUN_H
#define MATHFUN_H
#ifdef __cplusplus
extern "C"{
#endif
#include <assert.h>
/*
* 函数名:matMult
* 功能:实现两矩阵相乘。
* 参数:
* double fstMat[] - 存放矩阵A的元素
* double sndMat[] - 存放矩阵B的元素
* int fstRows - 矩阵A与乘积矩阵C的行数
* int rowsCols - 矩阵A的列数,矩阵B的行数
* int sndCols - 矩阵B与乘积矩阵C的列数
* double destMat[] - 返回乘积矩阵C=A*B的元素
* 返回值:void
* 作者:LYC
* 日期:2013-07-04
*/
void matMult(double fstMat[], double sndMat[], int fstRows, int rowsCols, int sndCols, double destMat[]);
#ifdef __cplusplus
};
#endif
#endif
//MathFun.c文件(注意是.c文件)
#include "MathFun.h"
void matMult(double fstMat[], double sndMat[], int fstRows, int rowsCols, int sndCols, double destMat[])
{
int i,j,t;
for (i=0; i<fstRows; i++) //对应destMat的行
{
for (j=0; j<sndCols; j++) //对应destMat的列
{
for (t=0; t<rowsCols; t++) //求和
{
destMat[i*sndCols + j] = fstMat[i*rowsCols + t] * sndMat[t*sndCols + j];
}
}
}
}
//main.c文件(注意是.c文件)
#include "stdio.h" #include "MathFun.h" #include <malloc.h> #include <memory> void main() { int m = 1; int n = 2; int k = 1; double *pA = (double *)malloc(m * n * sizeof(double)); pA[0] = 1; pA[1] = 2; double *pB = (double *)malloc(n * k * sizeof(double)); pB[0] = 2; pB[1] = 1; double *pC = (double *)malloc(m * k * sizeof(double)); memset(pC, 0, m * k * sizeof(double)); matMult(pA, pB, m, n, k, pC); getchar(); }
相关文章推荐
- Android的框架层是如何调用C++提供的服务的
- C++如何调用C#
- 在C++ 中 如何调用 C# 写的DLL
- 如何从Excel 中调用C/C++写的动态链接库函数
- Android NDK JNI: C++如何调用Java API传递字符串, 并将字符串显示到TextView.
- Lua学习笔记(一) vs2013如何在C++中调用Lua(修正版)
- C中如何调用C++函数
- 实在受不了了,大家来帮帮我如何调用这个C++/CLI的DLL
- 嵌入式 C如何调用C++的静态库收集
- 如何用C++调用命令行
- 关于在C/C++语言中,函数如何返回数组,数组如何作为参数传递以及返回数组的函数该如何调用问题的总结
- 基于Windows平台,C++ 如何调用exe程序
- 【c/c++】如何调用【Window】cmd命令行命令并获取命令行的输出内容
- 网易校园招聘c++题目--如何让new操作符不分配内存,只调用构造函数
- C++如何调用C#的DLL方法
- 基于 wke 的浏览器:如何实现 js 和 c++ 的互相调用
- c#调用C++写的dll导出类,如何实现
- 如何在C++中调用C程序
- C++和C中的函数如何相互调用
- JAVA如何调用C/C++方法