VC中使用Matlab Engine出现"无法找到libeng.dll"的问题

时间:2022-06-19 09:44:51

VC中使用Matlab Engine出现"无法找到libeng.dll"的问题

本以为使这个原因

,其实不是我2了

#include "engine.h"

//终于知道为什吗老是找不到那个库文件--是因为添加的头文件是以引号括起来的啊

//#include <engine.h>

不是因为环境变量没有生效的缘故

其实目前来说应该是这个问题no compile tool is associated with the file extension? 因为编译器窗口打开的是一个h文件,编译器无法编译,必须当前打开的是一个cpp文件,才能进行编译,然后link就不会出现找不到库文件的错误了

 

2010-08-31 12:24

我用的是Visual Studio 2008和Matlab R2009a,再次出现这个问题:
在VS的包含头文件中已经加入:D:\Program Files\MATLAB\R2009a\extern\include\
在VS的包含库文件中已经加入:D:\Program Files\MATLAB\R2009a\extern\lib\win32\microsoft\
在VS 的project 加入需要的D:\Program Files\MATLAB\R2009a\extern\lib\win32\microsoft\下各种库文件*.lib.

编译通过了,但是运行时后发现弹出:"无法找到libeng.dll",经过查找libeng.dll在D:\Program Files\MATLAB\R2009a\bin\win32\下,将D:\Program Files\MATLAB\R2009a\bin\win32\加入系统的Path路径中,还是不行,后来考虑到修改Path需要重启才可以,重启以后果然可以了。

修改系统path需要重启真是很麻烦,但是一直没有找到好的办法,网上的方法:
"

很多安装程序在安装完成后并不要求重启Windows,而新的环境变量已经生效了,可见在不重启Windows的情况下让环境变量生效是完全可行的。

可我搜索如何不需重启Windows让环境变量生效的方法,只找到三类方案:

  1. 下载一个专门的软件
  2. 编个小程序
  3. 修改注册表

我既然是个懒得重启Windows的人,难道我会不厌其烦按上述三种方法去做吗?没办法,我只有自己摸索。最后找到一个非常简单的在Windows下直接让环境变量生效的办法:

先到我的电脑>属性>高级>环境变量,添加新环境变量或修改已有的环境变量,然后运行“DOS命令提示符”或run cmd,假设要修改PATH变量,不管PATH的原值是什么,在DOS窗口直接把PATH修改为任意值,关闭DOS窗口,这时,我的电脑>属 性>高级>环境变量里PATH已经在Windows全局生效了。

不用担心在DOS窗口的修改会影响我的电脑>属性>高级>环境变量里的修改,DOS窗口的环境变量只是Windows环境变量的一个副本,副本的改动不会影响正本,但会触发正本的刷新,这正是我想要的——让环境变量生效。

附注:

不懂在DOS下修改环境变量?简单得很,如要修改PATH,“SET PATH=C:\”,等号两边不要有空格。PATH环境变量最常用,专门有个DOS命令PATH,用来查看和修改PATH值,这里就不展开讲PATH的语法了。

想验证一下环境变量到底有没有生效?简单得很,新开一个DOS窗口,如要看PATH值,“ECHO %PATH%”。同上,PATH还可以用PATH命令来查看。

"
似乎不好使,有时间试试用软件的方法

终于实现c#调用matlab函数(ZZ)

.net是微软的发展方向,以后我们开发软件的时候不免会调用一些matlab语言

今晚一直在***图用c#调用matlab,终于成功。

主要思想就是首先把matlab的m函数做成com组件,然后在c#中应用此com组件,即可。

主要步骤如下:
1.建一个m文件(test.m)
例如:
function test(h,D)
for x=-10:0.1:10,
   if x>D
       y=h;
       hold on;
       plot(x,y)
   elseif x<-D
       y=-h;  
       hold on;
       plot(x,y)
   else
       y=h/(D*x);
       hold on;
       plot(x,y)
   end
end

2.在matlab中输入comtool命令,就打开了matlab com builder,

点击file-new project,新建一个工程,

在component name里输入名字 点击ok就行了。

然后点击project–Add files,将test.m添加入工程,

然后点Build-Com Object,就会在comtest\distrib\文件夹下生成一个test1_0.dll(它就
是做好的com组件),

Build时matlab已经自动将此dll在注册表中注册

我们还需做一个准备工作,进入<matlabroot>/ bin/win32目录下(matlabroot为你机器上
matlab安装的路径),打regsvr32 mwcomutil.dll ,即对mwcomutil.dll进行注册(这个dll
是matlab下作的任何com组件都要用到的dll),下面 我们在其他编译器下调用时就可以用了

3.c#下实现调用

新建一个c#项目(我采用的是vs.net2003),选中右边的解决方案资源管理器中的引用
,点鼠标右键,选添加引用,在弹出来的窗口中选com,然后也找到test_1_0 .dll,点选
择,然后确定就可,此时此com组件也添加到工程里面去了,同样我们可以选择

然后编写程序

test.testclassClass st=new test.testclassClass();
             object m=1,n=2;
             st.test(m,n);
即可

然后在c#中就出现了我们所想得到的图形,呵呵
原来在c#中实现调用matlab没有我们所想象的困难呀,呵呵
希望大家有想法或者好的建议多多给出,

VC中使用Matlab Engine出现"无法找到libeng.dll"的问题的更多相关文章

  1. Java中使用MATLAB作图 &period;

    最近做一个项目,需要很多进行很多信号处理——小魏就是学软件的,对信号处理简直是个小白,最简单的实现就是傻瓜似的调用MATLAB的各种工具箱,达到目的就行. 同时,MATLAB是种解释性语言,执行效率比 ...

  2. 如何在VC&plus;&plus; 中调试MEX文件

    MEX文件对应的是将C/C++文件语言的编写之后 得到的相关文件加载到Matlab中运行的一种方式, 现对于Matlab 中的某些程序运行效率而言, C/C++ 代码某些算法的领域上面执行效率很高,若 ...

  3. 【转】三种方式在C&plus;&plus;中调用matlab

      C/C++调用Matlab 在工程实践中,C/C++调用Matlab 的方法主要有调用Matlab 计算引擎.包含m 文件转 换的C/C++文件,以及调用m文件生成的DLL 文件. 1 利用Mat ...

  4. VC中LINK 2001 和 LINK 2009 的错误的解决

    最近将两个开源C++项目编译成windows版本的时候遇到很多问题,关键是两个项目经过同事的修改之后,一个项目引用了另一个项目,两个项目的头文件中都有一些跨平台的关于数据类型,以及一些通用函数的定义, ...

  5. VC中实现GCC的2个比较常用的位运算函数

    在GCC中内嵌了两个位运算的函数,但在VC中并没有这两个函数(有相似函数). //返回前导的0的个数. int __builtin_clz (unsigned int x) //返回后面的0个个数,和 ...

  6. VC中不同类型DLL及区别

    1. DLL的概念可以向程序提供一些函数.变量或类. 静态链接库与动态链接库的区别:(1)静态链接库与动态链接库都是共享代码的方式.静态链接库把最后的指令都包含在最终生成的EXE文件中了:动态链接库不 ...

  7. VC中遍历目标进程中的模块

    VC中遍历目标进程中的模块 MFC代码win32 也可以用 在下面代码进行修改转换就可以了CString strModule; 可以换成 char* 但是MODULEENTRY32结构中的szModu ...

  8. VC&plus;&plus;学习之VC中常见问题

    VC++学习之VC中常见问题 (1)为什么某个类突然在工作区间里面突然看不见了? 只是类隐藏了,打开FILEVIEW,找到隐藏类的头文件,随便敲一下键盘的空格键,类就会在CLASSVIEW中显示了 ( ...

  9. VC中TRACE()的用法

    个人总结:最近看网络编程是碰到了TRACE语句,不知道在哪里输出,查了一晚上资料也没找出来,今天终于在CSDN上找到了,真是个高地方啊,方法如下: 1.在MFC中加入TRACE语句 2.在TOOLS- ...

随机推荐

  1. 信息安全-5:RSA算法详解&lpar;已编程实现&rpar;&lbrack;原创&rsqb;

    转发注明出处:http://www.cnblogs.com/0zcl/p/6120389.html 背景介绍 1976年以前,所有的加密方法都是同一种模式: (1)甲方选择某一种加密规则,对信息进行加 ...

  2. ip命令和ifconfig命令&lpar;转载&rpar;

    Linux的ip命令和ifconfig类似,但前者功能更强大,并旨在取代后者.使用ip命令,只需一个命令,你就能很轻松地执行一些网络管理任务.ifconfig是net-tools中已被废弃使用的一个命 ...

  3. &period;NET陷阱之六:从枚举值持久化带来大量空间消耗谈起

    好长时间没有写博文了,今天继续. 这次跟大家分享的内容起因于对一个枚举值列表的序列化,下面简化后的代码即能重现.为了明确起见,我显式指定了枚举的基础类型. // 定义一个枚举类型. public en ...

  4. HTTP 错误 500&period;19 - Internal Server Error

    ylbtech-Error-IIS: HTTP 错误 500.19 - Internal Server Error 1.A,错误代码返回顶部 错误摘要 HTTP 错误 500.19 - Interna ...

  5. php下载文件,添加响应头

    //下载,添加响应头信息 header('Content-type:application/octet-stream'); header('Content-Disposition:attachment ...

  6. epub显示特殊字体

    You need to open the ePub in an archive program (they are just ZIP files) and add an XML file to the ...

  7. win32 console application 如何修改图标?

    win32 console application ,不要看这名字高端大气上档次,让你摸不着头脑,其实他就是我们最先学习c语言那种黑色窗口的东西......话说他怎么修改图标呢?第一种方法是:右键-〉 ...

  8. python&sol;数据类型和变量

    数据类型和变量 数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是, 计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据, ...

  9. &lbrack;转&rsqb;linux查看日志文件内容命令

    linux查看日志文件内容命令tail.cat.tac.head.echo tail -f test.log你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C, ---------- ...

  10. 关于MT8127中sdk的编译出错问题

    今天在看MTK提供的SDK编译文档,按照步骤做,结果出错了,文档如下: 2- Building an SDK for MacOS and Linux ------------------------- ...