找回密码
 注册
Simdroid-非首页
查看: 225|回复: 14

混合编程找不到libmx.lib libeng.lib?

[复制链接]
发表于 2010-7-21 17:03:36 | 显示全部楼层 |阅读模式 来自 浙江杭州
环境 Windows 7, Matlab2010a, Visual Studio 2010
参照<VS2008调用Matlab引擎详解>的做法
1 设置变量
User Variiables
Path:
C:\Program Files\PC Connectivity Solution\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\ATI Technologies\ATI.ACE\Core-Static;D:\Portable\Windows7Master;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\;C:\Program Files\MATLAB\R2010a\runtime\win32;C:\Program Files\MATLAB\R2010a\bin;C:\Program Files\SinoVoice\jTTS 5.0 Desktop\Bin;C:\Program Files\Common Files\TTKN\Bin;C:\Program Files\Common Files\Thunder Network\KanKan\Codecs;C:\Program Files\Altium Designer Winter 09\System

System Variables
C:\Program Files\CTEX\CTeX\cct\bin;C:\Program Files\CTEX\CTeX\ty\bin;C:\Program Files\CTEX\Ghostscript\gs8.70\bin;C:\Program Files\CTEX\GSview\gsview;C:\Program Files\CTEX\WinEdt;C:\Program Files\Windows Live\Shared;C:\Program Files\MATLAB\R2010a\runtime\win32;C:\Program Files\MATLAB\R2010a\bin

2 设置路径
包含目录 C:\Program Files\MATLAB\R2010a\extern\include;$(IncludePath)
库目录 C:\Program Files\MATLAB\R2010a\extern\lib\win32\microsoft;$(LibraryPath)
链接器 输入 libeng.lib libmx.lib;%(AdditionalDependencies)

3 编写代码
#include "engine.h" // 包含引擎函数的头文件
#include <iostream>
int main(int argc, char *argv[])
{
    char buf[1024];
    Engine *ep = engOpen(NULL); // 启动Matlab
    engSetVisible(ep, false); // 设置窗口不可见
    engOutputBuffer(ep, buf, 1024);
    mxArray *mxN = mxCreateDoubleScalar(3);
    engPutVariable(ep, "N", mxN);
    // 将变量放置到Matlab空间中
    engEvalString(ep, "D=rand(N, N)");
    // 在Matlab环境中执行代码
    mxArray *mxData = engGetVariable(ep, "D");
    // 获得返回的结果
    std::cout << buf << std::endl;
    engClose(ep); // 关闭Matlab
    system("pause");
    return 0;
}

4 生成解决方案
出现错误:
错误    1    error LNK1104: 无法打开文件“libeng.lib libmx.lib”    d:\Users\Storm\documents\visual studio 2010\Projects\MatlabEngineTest\MatlabEngineTest\LINK    MatlabEngineTest

在网上找了好久,仍然不知如何解决?可能会是什么原因呢?
发表于 2010-7-22 09:12:33 | 显示全部楼层 来自 黑龙江哈尔滨
Simdroid开发平台
你这版本也太新了。Windows 7, Matlab2010a, Visual Studio 2010这三部份其中的任何一部份,都可能有问题,也能是这三部份中的其中二部份不兼容。建议换 Visual Studio 2008试一下。

建议新手还是装老版本,装新版本成了给别人当小白鼠了。

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2010-7-22 10:35:39 | 显示全部楼层 来自 浙江杭州
本帖最后由 lengyunfeng 于 2010-7-22 11:17 编辑

对了,昨天换了Visual Studio 2008,也提示说 找不到libmx.lib。。。


==================================================================================
messenger说的是你不要在最新的操作系统里用最新的matlab,配合最新的visual studiol来做混编。。。
by lengyunfeng
==================================================================================
回复 不支持

使用道具 举报

发表于 2010-7-22 12:20:05 | 显示全部楼层 来自 新疆乌鲁木齐
本帖最后由 bainhome 于 2010-7-22 12:22 编辑

如果不是设置错误,这个搞不好要让taohe给看看,只有他才会在系统里装一堆不同的vs版本...
那个链接器是指在vs设置下的include吗?记得这里要include一堆东西。
ps:看到环境变量设置中楼主也用CTEX,好...:handshake
回复 不支持

使用道具 举报

 楼主| 发表于 2010-7-22 18:29:03 | 显示全部楼层 来自 浙江杭州
谢谢楼上的bainhome和messenger大侠。
这里不知怎么上传图片,就用文字来描述吧。(方便的话告知下)
对于链接器,是这样设置的:
VS2010中解决方案资源管理器 右键点击项目,选择“属性”,
在“配置属性” ->“链接器”->“输入”->“附加依赖项” 添加 libeng.lib libmx.lib; 之后可以看到该行显示"libeng.lib libmx.lib;%(AdditionalDependencies)"
VS2008类似设置了,只不过 “附加依赖项”只显示 “libeng.lib libmx.lib”。
不知道对不对?

计算机中同时装了VS2008和VS2010,Matlab2010,只希望可以用其中一个调用Matlab引擎就好了,实在不想为了这个改装xp系统。。。
回复 不支持

使用道具 举报

发表于 2010-7-22 19:56:03 | 显示全部楼层 来自 黑龙江哈尔滨
不想多说,提2个建议:

1、看一下C:\Program Files\MATLAB\R2010a\extern\lib\win32\microsoft目录下面是否有libeng.lib libmx.lib这2个文件,有的版本,这2个文件在上面路径的子目录下;
2、将libeng.lib libmx.lib这2个文件拷贝到VC过程目录中试试。
回复 不支持

使用道具 举报

发表于 2010-7-22 19:56:28 | 显示全部楼层 来自 北京
你确定环境路径弄好了?
这两个库在:
XX:\Program Files\MATLAB\R2009b\extern\lib\win32\microsoft

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2010-7-24 21:19:51 | 显示全部楼层 来自 新加坡
配置步骤似乎没有问题,出现的错误和操作系统以及VS版本应该没有关系。我在Win7,VS2008,matlab 2010a中试验没有问题。

看看C:\Program Files\MATLAB\R2010a\extern\lib\win32\microsoft是否有libmx.lib等所需的库文件。

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2010-7-31 15:09:56 | 显示全部楼层 来自 浙江杭州
配置步骤似乎没有问题,出现的错误和操作系统以及VS版本应该没有关系。我在Win7,VS2008,matlab 2010a中试验没有问题。

看看C:\Program Files\MATLAB\R2010a\extern\lib\win32\microsoft是否有libmx.lib等所需的 ...
taohe 发表于 2010-7-24 21:19

咦,上次回了帖却没有显示。。。
重发一遍。
谢谢,有的。
会不会是我哪儿步骤操作错了呢。
迟些我把详细步骤记录下来。
回复 不支持

使用道具 举报

发表于 2010-12-1 00:11:23 | 显示全部楼层 来自 瑞典
这个问题我也遇见了,不过我是vs2008和matlab 2010的64位,在win7下,感觉路径都对啊,而且我在程序里用#pragma 把libmx.lib libeng.lib, libmat.lib又重新加了一遍,好像还是unsolved extern symbol, 不知道到底是咋回事
回复 不支持

使用道具 举报

发表于 2011-3-26 20:05:59 | 显示全部楼层 来自 重庆
错误        1        fatal error LNK1104: 无法打开文件“D:\Program Files\MATLAB\R2010a\extern\lib\win32\libmex.dll”        Matlab_C        Matlab_C
这是什么问题啊 文件存在的
回复 不支持

使用道具 举报

发表于 2011-3-26 20:19:25 | 显示全部楼层 来自 黑龙江哈尔滨
可能是libmex.dll没有加入路径吧

错误        1        fatal error LNK1104: 无法打开文件“D:\Program Files\MATLAB\R2010a\extern\lib\win32\libmex.dll”        Matlab_C        Matlab_C
这是什么问题啊 文件存在的
dahaijianfei 发表于 2011-3-26 20:05
回复 不支持

使用道具 举报

发表于 2011-3-26 20:36:46 | 显示全部楼层 来自 重庆
这个问题我也遇见了,不过我是vs2008和matlab 2010的64位,在win7下,感觉路径都对啊,而且我在程序里用#pragma 把libmx.lib libeng.lib, libmat.lib又重新加了一遍,好像还是unsolved extern symbol, 不知道到底是咋 ...
chlpd 发表于 2010-12-1 00:11
那个路径要用引号引起来"D:\Program Files\MATLAB\R2010a\extern\lib\win32\libmex.dll" "D:\Program Files\MATLAB\R2010a\extern\lib\win32\libeng.dll" "D:\Program Files\MATLAB\R2010a\extern\lib\win32\libmat.dll"
回复 不支持

使用道具 举报

发表于 2011-3-27 13:40:11 | 显示全部楼层 来自 新加坡
环境 Windows 7, Matlab2010a, Visual Studio 2010
参照的做法
...2 设置路径
包含目录 C:\Program Files\MATLAB\R2010a\extern\include;$(IncludePath)
库目录 C:\Program Files\MATLAB\R2010a\extern\lib\win32\microsoft;$(LibraryPath)
链接器 输入 libeng.lib libmx.lib;%(AdditionalDependencies)

...
pengxiangbobin 发表于 2010-7-21 17:03


刚才又看了一下这个帖子,问题可能出在你输入以上libeng.lib和libmx.lib的时候。注意如上所示你可能是在那个编辑框手工输入由空格隔开的libeng.lib以及libmx.lib。这样的话,VisualStudio2010可能会把这两个lib函数当成是一个了,注意到VisualStudio2010采用分号“;“来隔开多个需要连接的库函数。现在再看那个错误信息似乎就不难理解了。

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2011-6-1 15:22:28 | 显示全部楼层 来自 河北廊坊
错误        1        fatal error LNK1104: 无法打开文件“D:\Program Files\MATLAB\R2010a\extern\lib\win32\libmex.dll”        Matlab_C        Matlab_C
这是什么问题啊 文件存在的
dahaijianfei 发表于 2011-3-26 20:05



我最近编译的时候也遇到了这个问题,然后从下面文章中找到了解决的方法。http://blog.sina.com.cn/s/blog_6163bdeb0100qd49.html

评分

1

查看全部评分

回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-6 09:26 , Processed in 0.063923 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表