VS2008与Matlab混合编程设置

2023-05-16

VS2008与MATLAB R2009b混合编程环境配置

一,VS2008中的函数调用matlab的写好的函数

 

1.Matlab生成DLL

1.1编译器的安装

实验环境:

XP 32位机MATLAB R2009b(安装路径:D:Program Files/MATLABR2009b

VS2008中文版(安装路径:D:Program Files/Microsoft Visual Studio 9.0

为了能够让 VC 调用 Matlab 程序,我们可以采用将 Matlab程序包装成动态链接文件 DLL 的形式,然后让 VC调用动态链接文件,因此在 Matlab 中,我们需要设置一下 Matlab的编译库,在 Matlab 主窗口中键入如下代码

1.安装设置matlab编译器:

matlab中先安装编译器,我在第一次安装的时候一路y下来,只有一个matlab的编译器compiler,这时就要选择N(需要添加VS2008的路径),按照以下步骤操作

>> mbuild -setup

Please choose your compiler for building standalone MATLAB applications:

 

Would you like mbuild to locate installed compilers [y]/n?n

 

Select a compiler:

[1] Lcc-win32 C 2.4.1

[2] Microsoft Visual C++ 6.0

[3] Microsoft Visual C++ .NET 2003

[4] Microsoft Visual C++ 2005 SP1

[5] Microsoft Visual C++ 2008 Express

[6] Microsoft Visual C++ 2008 SP1

[0] None

 

Compiler: 6

 

The default location for Microsoft Visual C++ 2008 SP1 compilers is C:Program FilesMicrosoft Visual Studio 9.0,

but that directory does not exist on this machine.  

 

Use C:Program FilesMicrosoft Visual Studio 9.0 anyway [y]/n?n

Please enter the location of your compiler: [C:Program FilesMicrosoft Visual Studio 9.0] D:Program Files/Microsoft Visual Studio 9.0

 (红色部分换成你的vs所安装的地址)

Please verify your choices:

 

Compiler: Microsoft Visual C++ 2008 SP1  

Location: D:Program Files/Microsoft Visual Studio 9.0

Are these correct [y]/n? y

 

2 >> mex -setup

操作与前面类似

 

1.2 DLL的生成

MyFunc.m放在工作区,具体的代码如下

 

function b = MyFunc(a)

b = a.*a;

 

 

将该m文件生成cpp文件使用mcc命令

mcc -W cpplib:MyFunc -T link:lib MyFunc.m –C

 

(其中 cpplib:后面的是需要生成文件的文件名,是自己取的, link:lib后面的 MyFunc.m 是转换为 DLL M 文件的文件名。 -W/-T/-C是参数,具体含义可以通过 mcc –help 命令查看,注意参数的大小写。)

 

运行完命令在工作区生成如下一系列文件

2. VS调用DLL

2.1新建一个项目,并设置环境

 

新建一个win32 控制台应用程序,我取的名字是matlabFun.当然新建其他的项目类型也可以,我这只是个例子。接下来进行配置,在该项目的属性中进行了配置,只对该项目有效。若建新的项目需要重新配置。项目建好后将MyFunc.lib, MyFunc.h, MyFunc.dll MyFunc.ctf四个文件拷贝到项目目录下。

1.选择工具-选项-项目和解决方案-VC++目录,在显示以下内容目录里选择包含文件“D:\Program Files\MATLAB\R2010b\extern\include”添加进去,然后选择库文件“D:\Program Files\MATLAB\R2010b\extern\lib”添加进去,其中 D:\Program Files Matlab 的安装目录,可根据实际情况进行修改。

2. 配置项目属性页/配置属性/C-C++/常规/附加包含目录

"D:\Program Files\MATLAB\R2009b\extern\lib\win32";"D:\Program Files\MATLAB\R2009b\extern\include"

目属性页/配置属性/链接器/常规/附加库目录,请根据自己电脑上软件的安装位置对照设置,如下图所示:

后配置项目属性页/配置属性/链接器/输入/附加依赖性,填入libmyadd2.lib mclmcrrt.lib mclmcr.lib ,如下图所示:

2.2编写VS主程序,调试运行

#include "stdafx.h"

#include <iostream>

#include "mclmcr.h"

#include "MyFunc.h"

int _tmain(int argc, _TCHAR* argv[])

{

MyFuncInitialize();

double _x[5] = {1,2,3,4,5};

double _y[5];

mxArray* x = mxCreateDoubleMatrix(1, 5, mxREAL);

memcpy(mxGetPr(x), (void*)_x, sizeof(_x));

mxArray *input[1] = {x};

mxArray *output[1];

mlxMyFunc(1,output,1,input);

mxArray *y;

y = output[0];

memcpy(_y, mxGetPr(y), sizeof(_y));

MyFuncTerminate();

    return 0;

}

MyFuncInitialize MyFuncTerminatemlxMyFunc均可以在MyFunc.h文件中找到具体的定义。

mlxMyFunc 函数原型为: mlxMyFunc(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[]) nlhs代表输出参数个数,plhs[]里面存放的是输出参数的指针,nrhs代表输入参数个数,prhs[]中存放的是输入参数的指针。上例中由于输入输出参数只有一个,因此在 plhs[0]中存放的就是 M文件中 b 的指针,prhs[0]中存放的就是 M文件中 a 的指针。编译运行之后就可以在弹出的消息框中得到所要的结果。

将项目文件夹下生成的可执行文件复制出来,将 MyFunc.dll文件、MyFunc.ctf 文件和matlabFun.exe文件放在同一目录下便可脱离 VC++独立运行。如果需要在其他未装 Matlab的机器上运行,则还需要将“D:\Program Files\MATLAB\R2010b\toolbox\compiler\deploy\win32”中的 MCRInstaller.exe复制出来,在未安装 Matlab 的电脑上运行此程序,才可使得刚刚生成的可执行文件顺利运行。

二,matlab中的函数调用的VS2008的函数

通过使用C/C++Matlab混合编程,既可以享受到C代码快速执行的速度,又可以方便的使用Matlab众多的库函数和强大的绘图功能。让Matlab调用C函数是通过DLL文件实现的,而这个DLL的开发过程不仅仅可以使用Matlab自带的mex命令,还可以使用VC++开发环境,使用VC有很多好处,一是让我回到了原来熟悉的开发环境中,二能够使用更加标准的C++编译器,第三点也是最爽的,可以使用VC强大的调试功能。

方法一,不需要调试,直接用mex命令即可

1.1中的设置编译器相同,在matlab窗口中输入命令

>> mex -setup

选择Microsoft Visual C++ 2008 SP1即可。

 

VS中编写testadd.cpp文件,如下

#include "mex.h"

double add(double x,double y)

{

 return(x + y);

}

void mexFunction(int nlhs,mxArray *plhs[],

     int nrhs,const mxArray *prhs[])

{

 double *a;

 double b, c;

  plhs[0] = mxCreateDoubleMatrix(1, 1, mxREAL);

 a = mxGetPr(plhs[0]);

 b = *(mxGetPr(prhs[0]));

 c = *(mxGetPr(prhs[1]));

 *a = add(b, c);

}

 

matlab的执行路径调整到cpp目录下,执行命令

>>mex testadd.cpp

 

即可在相同的路径下方产生testadd.mexw32文件。然后在matlab窗口中输入函数的名称即可调用testaddVS函数。

>>testadd(4,5)

 

>>ans=9

 

以上的方法仅能得到mexw32文件,不能实现VSmatlab的联调。

 

方法二,用DLL文件的方式生成mexw32,然后可以从VS中启动matlab调试。

 

1. 新建一个空的dll程序

2. matlab函数提供头文件和静态库的支持

Include files中添加”…\extern\include”和”…\extern\include\win32”,

Library files中添加”…\extern\lib\win32\microsoft”。

在项目属性中,让链接器链接libmx.liblibmat.liblibmex.lib,如图:

添加Preprocessor Definitions中添加MATLAB_MEX_FILE的宏定义。

现在写一个dll程序就可以编译通过,生成项目的debug文件,如:

3. 利用def文件导出mexFunction函数

首先告诉编译器我使用了testadd.def文件,在链接器-输入-模块定义文件中填上testadd.def

再在工程目录中编写testadd.def的内容,(新建记事本,然后将*.txt改为testadd.def即可)

在该def文件中只需添加两句话:

LIBRARY testadd

EXPORTS mexFunction

最后,在链接器-常规-输出文件中将输出文件的后缀dll名改为mexw32

再次编译、生成,可以在生出目录mexw32文件。

 

4. VS中启动调试时关联matlab窗口设置

在调试-命令里添加Matlab的启动地址:”…\bin\win32\MATLAB.exe”。如图:

在“工作目录”中添加testadd.mexw32文件所在的目录,如下图:

VS程序中设定断点,启动VS调试,会弹出提示,点击“是”就行了。

Matlab窗口会自动启动,再在MATLAB中输入要运行的函数命令即可实现联调状态:

返回到VS程序中,可以查看变量的值

最后在matlab中得到最终的运行结果

 

当然,最终使用的mexw32文件还应该是Release版本的,这样的话,上面谈的部分设置还需要在Release版本中重新来过。

 

至此,我发现只能在VS中启动matlab窗口,然后在matlab中输入调用C函数命令,才能进行联调。而从matlab中启动VS平台,进行调试的方法则目前还没有,可能是两大运营平台的合作问题吧。

三,混合编程中常用的函数

MEX文件的源文件实际上就是一个C语言源文件, MEX的源文件结构由两部分组成:入口子程序和功能子程序。

其中入口子程序函数名必须为mexFunction。其中nlhs (number of left-hand side)是输出参数的个数,nrhs(number of right-hand side)是输入参数的个数。prhs[]plhs[]是指针数组变量,其元素为指向右变量与左变量的指针。在用户程序中可利用上述指针在CMATLAB中相互传递数据。MEX函数库里的mexFunction()函数,相当于C语言中的main()函数。MEX源文件没有main(),而是以一个mexFunction()代替。

功能子程序用于完成一些特定的计算功能或硬件处理功能,由上述的入口子程序调用。如果必要,该程序可与入口子程序合二为一。

入口子程序起链接C子程序与MATLAB系统的作用,是实现MATLABC混合编程所必须的。格式为:

 

#include "mex.h"

double add(double x, double y)

{

         return x+y;

}

void mexFunction(int nlhs, mxArray *plhs[],int nrhs,const mxArray *prhs[])

{

         double a,b,*c;

         a=mxGetScalar(prhs[0]);

         b=mxGetScalar(prhs[1]);

         plhs[0]=mxCreateDoubleMatrix(1,1,mxREAL);

         c=mxGetPr(plhs[0]);

         *c=add(a,b);

}

首先对文件内容进行简单说明:

其中nlhs (number of left-handside)是输出参数的个数,nrhs (number of right-hand side)是输入参数的个数。例如对于c=add(a,b),有nlhs=1hrhs=2

plhs[]prhs[]都是指针数组,也就是说它是个数组,每个元素都是一个指针,这些指针指向的东东的类型是mxArray。那什么是mxArray呢?可以把他理解MATLAB中的矩阵,因为MATLAB中所有数据都是以矩阵的形式保存的。

先讲prhs[],就是输入的参数,prhs[0]指向aprhs[1]指向b,但是注意不能用*(prhs[0])得到a的值。因为 prhs[0]指向的东西的类型是mxArray(参数列表里看出),想把它的值以我们常用的数值形式赋给一个标量(Scalar),得使用 mxGetScalar()函数转化一下:

double a, b;

    a = mxGetScalar(prhs[0]);

    b = mxGetScalar(prhs[1]);

plhs对应的输出的内容。plhs[0]这个指针指向输出的第一个参数,就是c=add(a, b)中的c了。记住这个c应该是以mxArray的类型出现的,为了得到mxArray类型的输出量,要使用mxCreateDoubleMatrix()函数,它创建一个指向mxArray类型的指针。

plhs[0] = mxCreateDoubleMatrix(1, 1, mxREAL);

参数(1, 1, mxREAL)定义了对应c的尺寸类型,MATLABc是以1×1的实数矩阵形式报保存的。

而使用mxGetPr()函数可以得到plhs[0]指向的mxArray的第一个double类型的指针。

double *c;

c = mxGetPr(plhs[0]);

最后调用add()函数

*c=add(a,b);

 

Matlab命令窗口输入命令

mex MyMEXFun.c

可以看到在当前目录生成新文件MyMEXFun.mexw32。在命令窗口中输入c=MyMEXFun(3,4)命令,可得到c=7

 

使用mex时的注意事项:

1.MATLAB调用mex接口时,将参数个数及参数指针传入接口子程序,由接口子程序完成指针和调用变量的赋值、输出数据的内存空间分配,接口子程序再将参数指针或经过赋值的变量作为参数传递给C的计算子程序,完成调用过程。调用时应注意指针所指对象的正确性,为处理正确最好做相应的强制类型转换。

2.mex并不便于调试,因此应在CIDE中用测试集调试后再放入mex文件中。

3.MATLAB中指向二维及高维数组的指针递增方式是按行递增的,而C中是按列递增的,因此计算index时要注意位置。MATLAB矩阵数据的存储顺序是”从上到下,从左到右”。 MATLAB的指标从1开始,C的指标从0开始。

 

为了mex的正确执行,也是良好编程习惯的要求,需要对输入参数和输出参数进行个数和类型的检查,常用的mex库函数有:

mxGetClassID //获得指针所指变量类型

mxIsNumeric, mxIsCell等,检查指针所指变量是否为符合某种要求的变量类型。更多可查阅帮助。

参数检查过程中可使用mexErrMsgTxt输出错误信息。

 

mxGetM, mxGetN,获得矩阵的行数和列数

mxGetDimensions,获得矩阵维数

mxGetPrmxGetPi,获得矩阵实数部分、虚数部分的指针

mxGetString, 获得字符串内容

mxGetElementSize, 获得存储矩阵元素所需要的字节数

 

mxCalloc,内存分配。用mxCalloc不用callocmalloc,因为mxCalloc会自动释放内存,不需要手动free了。

 

mxCreateString, 创建1*N的字符串矩阵

mxCreateDoubleMatrix, 创建2维双精度浮点矩阵,可以是实数(mxREAL)或者复数(mxCOMPLEX)

mxCreateStructArray, 创建N维结构体矩阵

mxCreateCellMatrix, 创建二维单元矩阵

mxCreateNumericArray,创建n维数值矩阵

 

mexPrintf, 重新封装的printf

 

mxSetFiled, 设置结构体矩阵的域

mxSetCell, 设置单元矩阵的单元值

mxSetPr, 设置矩阵实数值

mxSetPi, 设置矩阵虚数值

 

mxCallMATLAB,调用MATLAB中其他内建函数、自定义M文件、mex文件。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VS2008与Matlab混合编程设置 的相关文章

  • 如何在不使用 MATLAB 的情况下打开 .mat 文件?

    我在Matlab中做了一个项目 现在我已经卸载了Matlab 现在 我需要一些我的项目的参考 我留下了所有 mat 文件 我正在尝试在记事本中打开它们 并且我在那里得到了 unicode 字符 我的问题很简单 如何在记事本或某些文字处理器中
  • MATLAB 引擎函数的输入参数

    我正在尝试使用 MATLAB 引擎在 Python 中调用 MATLAB 函数 但遇到一些问题 在设法将 NumPy 数组作为函数的输入处理后 现在 MATLAB 出现一些错误 MatlabExecutionError 未定义输入函数 si
  • 在 Matlab、VB6 和 VB.NET 程序之间发送消息的最简单方法

    我们正在将一套数据采集和分析例程从 VB6 程序升级为 VB NET VB6 和 Matlab 程序的混合体 我们希望保持系统模块化 单独的 EXE 以便我们可以轻松创建专门的独立分析程序 而无需不断升级大型应用程序 当所有程序都是用 VB
  • MATLAB:解包函数

    我正在与 Mathworks 的某人讨论 unwrap http www mathworks com access helpdesk help techdoc ref unwrap html函数中对于 以外的跳跃容差有一个 bug 并且希望
  • 在Matlab中使用中心切片定理实现滤波反投影算法

    我正在研究一种使用中心切片定理的滤波反投影算法作为家庭作业 虽然我理解纸上的理论 但在 Matlab 中实现它时遇到了问题 我得到了一个可以遵循的框架 但我认为我可能误解了一个步骤 这是我所拥有的 function img sampleFB
  • 我的 matlab 图中需要不同的颜色

    这是我的情节代码 问题是我的图中的两条线具有相同的颜色 我需要为图中的每条线 总共 4 条线 分配一个特殊的颜色 for i 1 nFolderContents data hdrload folderContents i if size f
  • 正确重载 stringbuf 以替换 MATLAB mex 文件中的 cout

    MathWorks 目前不允许您使用cout当 MATLAB 桌面打开时 从 mex 文件中读取 因为它们已重定向 stdout 他们当前的解决方法是提供一个函数 mexPrintf 他们要求你改用 http www mathworks c
  • 如何在 R 中导入 matlab 表

    我有一个matlab mat文件与表数据类型我想将其导入 R 中 我为此使用 readMat R 正在将其作为列表读取 之后有没有办法将列表转换为 R 中的数据帧或表格格式 当我使用as dataframe我收到以下错误 Error in
  • 朴素分类器 matlab

    在 matlab 中测试朴素分类器时 即使我在相同的样本数据上进行训练和测试 我也会得到不同的结果 我想知道我的代码是否正确 是否有人可以帮助解释这是为什么 dimensionality reduction columns 6 U S V
  • 数组中 2 个百分位之间的平均元素

    我有 2 个长度为 200 的向量 例如 A 和 B 然后我使用以下方法找到数组 A 的每第二个百分位数 A1 prctile A 1 2 100 1 这样A1是一个长度为50的数组 现在我想找到A1中每两个元素内的A元素的平均值 即A的第
  • 与超类和子类构造函数接口

    我在 matlab 文档和之前有关使用 matlab 继承和类构造函数创建接口的问题中找不到帮助 为了使其整洁 放在一个包内 我可以将其压缩如下 而不是拖拽代码 一套 MyPkg有一个超类Super和一些子类Sub1 Sub2 我的大多数属
  • 是否有一个函数可以将两个元胞数组“压缩”在一起? [复制]

    这个问题在这里已经有答案了 假设我有一个元胞数组A and B as so A A B C D B 1 2 3 4 我想创建元胞数组C通过将 A 和 B 压缩 在一起 如下所示 C zip A B C A 1 B 2 C 3 D 4 这样的
  • 将 Android 应用程序与服务器上的 Matlab 应用程序连接

    我正在 Android 上开发一个应用程序 它将获取图像输入 并将该输入传递到安装 MATLAB 应用程序的服务器 MATLAB 应用程序将计算结果并将其返回到该 Android 应用程序 我想知道我可以使用哪个服务器 如何将 MATLAB
  • 如何将Matlab代码库与Android集成?

    我有一个算法和 MATLAB 中的一些其他代码 我想在我的 Android 应用程序中使用它 我怎样才能做到这一点 我可以从 MATLAB 制作 jar 文件以便与 Android 一起使用吗 我必须做点别的事吗 如果您还有其他产品 适用于
  • 在 Matlab 中对列进行排序

    我有 2 列使用 textscan 导入的数据 数据看起来像这样 其中U is undetect and D is detect mydata 51 U 57 D 48 U 47 D my data 4x1 double 4x1 char
  • 图像增强 - 从书写中清除给定图像

    我需要清理这张照片 删除 清理我 的字样并使其变亮 作为图像处理课程作业的一部分 我可能会使用 matlab 函数 ginput 来查找图像中的特定点 当然 在脚本中您应该对所需的坐标进行硬编码 您可以使用 conv2 fft2 ifft2
  • 如何建立数据流挖掘的滑动窗口模型?

    我们遇到的情况是 流 来自传感器的数据或服务器上的点击流数据 采用滑动窗口算法 我们必须将最后 例如 500 个数据样本存储在内存中 然后 这些样本用于创建直方图 聚合并捕获有关输入数据流中异常的信息 请告诉我如何制作这样的滑动窗 如果您询
  • 如何在 R 或 MATLAB 中为散点图创建阴影误差条“框”

    我想在 R 或 MATLAB 中创建一个简单的散点图 涉及两个变量 x 和 y 它们有与之相关的错误 epsilon x 和 epsilon y 然而 我不是添加误差线 而是希望在每个 x y 对周围创建一个 阴影框 其中框的高度范围从 y
  • 使用 python 在网络上部署 matlab 应用程序

    您好 我想使用 python 在网络上部署 matlab 应用程序 有没有办法做到这一点 我已按照数学工作网站上的文档将我的应用程序转换为 jar 文件 java 类 有人能指出我前进的正确方向吗 事实上 您的 Matlab 代码打包为 J
  • 查找数组中元素之间的平均差异的有效方法

    希望标题不会让人困惑 通过例子来展示很简单 我有一个像这样的行向量 1 5 6 我想找到每个元素之间的平均差异 此示例中的差异为 4 和 1 因此平均值为 2 5 这是一个小例子 我的行向量可能非常大 我是 MatLab 新手 那么有没有一

随机推荐

  • MongoDB查询综合

    数据库操作 选择数据库 use lt 数据库名 gt 展示当前所在数据库 db 在选择数据库后 xff0c 可以进行该数据库的相关操作 xff0c 例如创建集合 插入文档等 查询语法 查询全部文档 db lt 集合名 gt find 指定条
  • c++如何编译

    include lt iostream gt 预处理指令 xff0c include是找一个文件 xff0c 一般引出头文件 int main main函数不用从主函数返回任何数据 std cout lt lt 34 Hello World
  • 在DAX进行字符串大小比较

    昨天看到一个人在论坛上上求助 xff0c 想找一个方法按照一定要求对数据进行分类 分类要求是查找原始数据中的BU Type隶属于分类依据中的哪个区间 xff0c 然后输出该区间对应的Identifier值 其中AA ZZ区间指的是所有两位字
  • Modbus协议的数据模型和地址模型,Modbus寄存器40001,30001是什么意思?

    在使用Modbus协议的时候 xff0c 经常会遇到诸如40001 30001 xff0c 10001之类的地址 xff0c 这些数字代表什么含义呢 xff1f 这其实是Modbus协议的数据模型和地址模型 Modbus协议的数据模型 数据
  • 如何看懂Modbus数据帧?Modbus RTU数据帧格式

    在介绍Modbus RTU数据帧格式之前 xff0c 首先让我们先了解一下Modbus的通讯模式 Modbus通讯模式 Modbus协议是典型的主 从通讯结构 xff0c 链路中只能有一台主设备 xff0c 可以有多台从设备 主设备向从设备
  • 网络安全,非对称加密,对称加密和非对称加密的区别

    当今世界 xff0c 网络安全问题比以往任何时候都更需认真对待 本文是属于 网络安全 系列文章之一 xff0c 我们将详细阐述了安全性的基础知识 在本文中 xff0c 我们将阐述非对称加密的原理 xff0c 这是确保真实性 完整性和保密性的
  • Modbus的常见问题解答:RS485总线连接采用什么样的线缆?RS485总线为什么要采用手拉手结构?RS485总线在连接时为什么要屏蔽接地?什么叫共模干扰和差模干扰?如何消除通讯线上的干扰?

    RS485总线连接采用什么样的线缆呢 xff1f 必须采用国际上通行的屏蔽双绞线 推荐用屏蔽双绞线的型号为RVSP2 0 5 xff08 二芯屏蔽双绞线 xff0c 每芯由16 股的0 2mm的导线组成 xff09 xff0c 线材特性阻抗
  • 积跬步,至千里 | 详解NP40芯片的三个节能「小举措」

    2023 年世界地球日的主题为 携手为保护地球投资 xff08 Invest in our planet xff09 xff0c 旨在呼吁每个人都能采取实际行动去投资地球的未来 相信无论您身处何处 xff0c 都已经感受到了全球极端天气的日
  • 如何快速替换PROFINET故障设备

    最近有些客户向我们咨询一个问题 xff1a 他们生产出售的 PROFINET 从站产品可能会在客户的应用现场被损坏 xff0c 需要更换全新的产品进行替换 客户询问我们是否有一种快速替换现场损坏设备的方法 除了调试客户 PROFINET 设
  • GPS固定数据输出语句($GPGGA)

    GPGGA GPS固定数据输出语句 GPGGA 这是一帧GPS定位的主要数据 xff0c 也是使用最广的数据 GPGGA 语句包括17个字段 xff1a 语句标识头 xff0c 世界时间 xff0c 纬度 xff0c 纬度半球 xff0c
  • 年度必看 | 2023全球工业网络市场份额预测报告

    重点摘要 每年 xff0c HMS Networks 都会对工业网络市场进行分析 xff0c 以预测工厂自动化中新安装节点的分布情况 今年的研究显示 xff0c 整个工业网络市场预计将在 2023 年增长 7 工业以太网仍然保持最高增长 x
  • 如何使用VSCode编译调试C语言程序

    一 前言 Visual Studio Code可通过安装插件来支持C 43 43 C Python PHP等语言 xff0c 使用的工程师越来越多 xff0c 本文介绍如何使用VS Code进行C语言的编译与调试 二 安装VS Code V
  • 修改一个工作空间中的工程文件目录结构

    如果有两个工程 xff0c Test1 Test2 xff0c 那么 默认目录结构的是 Test1 dsw Test1 dsp Test2 Test2 dsp 这个结构不太清晰 xff0c 用过vc7或更高的朋友知道 xff0c 他们的目录
  • C语言50题之百度笔试题

    判断你的电脑存储方式是大端还是小端 大端模式 xff0c 是指数据的高字节保存在内存的低地址中 xff0c 而数据的低字节保存在内存的高地址中 xff0c 这样的存储模式有点儿类似于把数据当作字符串顺序处理 xff1a 地址由小向大增加 x
  • 关于C语言中return的总结

    return break和continue 这三个关键字有一个共同点 xff0c 那就是读能让后面的语句不执行 xff0c 不同的地方就是挑的距离不一样 return很强大 xff0c 如果一个函数中有一个return xff0c 并且执行
  • Windows下Cmake的简单使用

    一 安装Cmake 官网 xff1a https cmake org 本文以Windows64为例 二 项目目录如下 xff1a 1 新建demo文件夹 2 在demo文件夹下新建bin文件夹 HelloWorld cpp CMakeLis
  • Cmake的动态链接库dll的生成并测试

    一 项目任务 1 完成一个CMake工程生成一个动态库 xff0c 该动态库包含内容 xff1a 1 包含一个StringUtil类 xff0c 该类具有Split和Trim2个静态方法 上述2个接口的定义如下 xff1a 删除字符串两侧的
  • cmd/dos批处理脚本出错-is not recognized as an internal or external command

    cmd xff08 dos xff09 批处理脚本执行出现错误 xff1a is not recognized as an internal or external command xff0c 运行中断 脚本文件无语法错误 xff0c 编辑
  • CTF竞赛介绍及刷题网址更新---2020.08

    CTF xff08 Capture The Flag xff09 中文一般译作夺旗赛 xff0c 在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式 CTF起源于1996年DEFCON全球黑客大会 xff0c 以代替之前黑
  • VS2008与Matlab混合编程设置

    VS2008 与MATLAB R2009b 混合编程环境配置 一 xff0c VS2008 中的函数调用matlab的写好的函数 1 Matlab 生成 DLL 1 1 编译器的安装 实验环境 xff1a XP 32 位机MATLAB R2