c++与matcom混合编程
#include
#include
#include
"matlib.h"
using namespace
std;
int main()
{
initM(MATCOM_VERSION);
//初始化Matcom C++矩阵库,当与exitM()同时使用,否则会造成内存泄露
Mm
a;
//创建矩阵a
Mm
b;
//创建矩阵b
Mm
x;
//创建矩阵x
a = rand(3,
3);
//随机产生一个3×3的矩阵
b = zeros(3, 3);
//生成一个全零矩阵,并赋值给b
b.r(1, 1) =
1;
//矩阵b的第一行第一列赋值为1
b.r(2, 2) =
3;
//矩阵b的第二行第二列赋值为3
b.r(3, 3) =
5;
//矩阵b的第三行第三列赋值为5
cout
<< "a=:"
<< endl;
display(a);
//输出矩阵a
cout
<< "b=:"
<< endl;
display(b);
//输出矩阵b
x = a + b;
cout
<<
"a+b=:\n";
display(x);
cout
<<
"矩阵a的行列式值为:" << endl;
display(det(a));
//输出矩阵a的行列式
cout
<<
"矩阵b的行列式为:" << endl;
display(det(b));
//输出矩阵a的行列式
cout
<<
"x矩阵的遍历:" << endl;
for (int i = 1; i <= x.rows();i++)
{
for (int j = 1; j <= x.cols();j++)
{
cout
<<
setiosflags(ios::fixed)
<< setprecision(2)
<< setw(6)
<< x.r(i, j);
}
cout
<<
"\n";
}
exitM();
return 0;
}
直接在vs当中运行此代码不能通过编译会报错,错误如下:
1>------ 已启动生成:
项目: matcom, 配置: Debug Win32 ------
1>
源.cpp
1>d:\matcom45\lib\matlib.h(2867):
error C2375: “abs”: 重定义;不同的链接
1>
d:\program files (x86)\microsoft visual studio
12.0\vc\include\math.h(1025) : 参见“abs”的声明
========== 生成:
成功
0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
通过错误我们知道是函数abs发生了重定义,定位到matcom的matlib.h头文件当中
#if !defined(_MSC_VER) |
(_MSC_VER>=1100)
m_type DLLI abs(m_type
x);
#endif
注释掉该定义
#if !defined(_MSC_VER) |
(_MSC_VER>=1100)
//m_type DLLI abs(m_type
x);
#endif
返回vs重新编译程序,发现编译能够成功,运行结果:
c++与matcom混合编程的更多相关文章
- VC 与Matlab混合编程之引擎操作详解
Visual C++ 是当前主流的应用程序开发环境之一,开发环境强大,开发的程序执行速度快.但在科学计算方面函数库显得不够丰富.读取.显示数据图形不方便. Matlab 是一款将数值分析.矩阵计算.信 ...
- matlab和c++混合编程---matlab和vs的环境配置问题及方法和步骤(转载)
matlab和c++混合编程---方法和步骤 matlab和c++混合编程---matlab和vs的环境配置问题 摘要:Matlab具有很强的数值计算和分析等能力,而C/C++是目前最为流行的高级程序 ...
- matlab混合编程向导(vc,vb,.net...)
一.matlab与vc混编 1.通过mcc将matlab的m文件转化为cpp,c文件或dll供vc调用: 这方面的实现推荐精华区Zosco和ljw总结的方法(x-6-1-4-3-1和2) ...
- 如玫瑰一般的PHP与C#混合编程
故事背景是这样的,有一套项目,服务器端是用C#写的,为了完成某种事情,它需要使用到一个组件,这个组件很小但很重要,很不巧的是,这个这个组件是用PHP语言写的,如果为了使用这个组件而专门搭建一个PHP的 ...
- C和C++混合编程中的extern "C" {}
引言 在用C++的项目源码中,经常会不可避免的会看到下面的代码: 1 2 3 4 5 6 7 8 9 #ifdef __cplusplus extern "C" { #endif ...
- C# 托管和非托管混合编程
在非托管模块中实现你比较重要的算法,然后通过 CLR 的平台互操作,来使托管代码调用它,这样程序仍然能够正常工作,但对非托管的本地代码进行反编译,就很困难. 最直接的实现托管与非托管编程的方法就是 ...
- [转载:]C#与Fortran混合编程之本地调用Fortran动态链接库
前言 C#发展到现在,已是一门相当完善的语言,他基于C语言风格,演化于C++.并依靠强大的.NET底层框架.C#可以用来快速构建桌面及Web应用.然而在我们的实际工作中,尽管C#已经非常完善,但还是不 ...
- C#Matlab混合编程类 初始化问题解决方法
************** 异常文本 ************** System.TypeInitializationException: “myPlus.matClass”的类型初始值设定项引发异 ...
- 国内第一部C#.Net调用Matlab混合编程视频教程
本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 Matlab和C#混合编程文章目录:[目录]Matlab和C#混合编程文章目录 一.视频说明 2014年的5.1,我将这套视频教 ...
随机推荐
- Flutter Platform Channels
Flutter Platform Channels(一) https://www.jianshu.com/p/33ac774f99b1 https://www.jianshu.com/p/c1e206 ...
- pandas-14 concatenate和combine_first的用法
pandas-14 concatenate和combine_first的用法 concatenate主要作用是拼接series和dataframe的数据. combine_first可以做来填充数据. ...
- 微信小程序下拉框组件
>>下拉组件 1.组件结构: 2.index.js: //index.js Component({ /** * 组件的属性列表 */ properties: { propArray: { ...
- POSIX 使用互斥量和条件变量实现生产者/消费者问题
boost的mutex,condition_variable非常好用.但是在Linux上,boost实际上做的是对pthread_mutex_t 和pthread_cond_t的一系列的封装.因此通过 ...
- linux技能点七 shell
shell脚本:定义,连接符,输入输出流,消息重定向,命令的退出状态,申明变量,运算符,控制语句 定义:linux下的多命令操作文件 连接符: ::用于命令的分隔符,命令会从左往右依次执行 & ...
- package-lock.json的作用(转载)
package-lock.json 文件的作用 来源 :https://www.cnblogs.com/kugeliu/p/9153775.html npm5之后安装文件之后会多出一个package ...
- day 02 作业 预科
目录 作业 作业 ==1.什么是编程== 通过使用编程语言做一些事情,表达一些自己的想法. ==2.简述计算机五大组成.== 计算机由cpu ,运算器 ,控制器,存储器(外存,内存) 输入设备 输出设 ...
- 第9章 运行TensorFlow
目录 第9章 运行TensorFlow 创建一个计算图并在会话中执行 管理图 节点值的生命周期 TensorFlow中的线性回归 实现梯度下降 给训练算法提供数据 保存和恢复模型 用TensorBoa ...
- Linux命令——gdisk、fdisk、partprobe
gdisk.fdisk MBR分区表请使用fdisk分区,GPT分区表请使用gdisk分区 MBR与GPT区别参考:Linux磁盘管理——MBR 与 GPT gdisk.gdisk这两个命令参数不需要 ...
- Python Image库简单处理图像
直接列举几个常用的函数,可在 http://effbot.org/imagingbook/image.htm 中查看更多相关函数. from PIL import Image import numpy ...