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

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

环境 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;
    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

在网上找了好久,仍然不知如何解决?可能会是什么原因呢?

messenger 发表于 2010-7-22 09:12:33

你这版本也太新了。Windows 7, Matlab2010a, Visual Studio 2010这三部份其中的任何一部份,都可能有问题,也能是这三部份中的其中二部份不兼容。建议换 Visual Studio 2008试一下。

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

pengxiangbobin 发表于 2010-7-22 10:35:39

本帖最后由 lengyunfeng 于 2010-7-22 11:17 编辑

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


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

bainhome 发表于 2010-7-22 12:20:05

本帖最后由 bainhome 于 2010-7-22 12:22 编辑

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

pengxiangbobin 发表于 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系统。。。

messenger 发表于 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过程目录中试试。

Heluoe 发表于 2010-7-22 19:56:28

你确定环境路径弄好了?
这两个库在:
XX:\Program Files\MATLAB\R2009b\extern\lib\win32\microsoft

taohe 发表于 2010-7-24 21:19:51

配置步骤似乎没有问题,出现的错误和操作系统以及VS版本应该没有关系。我在Win7,VS2008,matlab 2010a中试验没有问题。

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

pengxiangbobin 发表于 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 http://forum.simwe.com/images/common/back.gif
咦,上次回了帖却没有显示。。。
重发一遍。
谢谢,有的。
会不会是我哪儿步骤操作错了呢。
迟些我把详细步骤记录下来。

chlpd 发表于 2010-12-1 00:11:23

这个问题我也遇见了,不过我是vs2008和matlab 2010的64位,在win7下,感觉路径都对啊,而且我在程序里用#pragma 把libmx.lib libeng.lib, libmat.lib又重新加了一遍,好像还是unsolved extern symbol, 不知道到底是咋回事

dahaijianfei 发表于 2011-3-26 20:05:59

错误      1      fatal error LNK1104: 无法打开文件“D:\Program Files\MATLAB\R2010a\extern\lib\win32\libmex.dll”      Matlab_C      Matlab_C
这是什么问题啊 文件存在的

messenger 发表于 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 http://forum.simwe.com/images/common/back.gif

dahaijianfei 发表于 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 http://forum.simwe.com/images/common/back.gif那个路径要用引号引起来"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"

taohe 发表于 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 http://forum.simwe.com/images/common/back.gif

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

feynmand 发表于 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://forum.simwe.com/images/common/back.gif


我最近编译的时候也遇到了这个问题,然后从下面文章中找到了解决的方法。http://blog.sina.com.cn/s/blog_6163bdeb0100qd49.html
页: [1]
查看完整版本: 混合编程找不到libmx.lib libeng.lib?