VC6的release版本问题2

vb748 2009-11-26 01:45:16
上一个问题我没说详细:
我软件里面对MATLAB的环境设置:

VC中调用Matlab引擎的设置:
1、Tools-->Options-->Directories-->Include Files中添加:matlab安装目录\extern\include;
Tools-->Options-->Directories-->Library Files中添加:matlab安装目录\EXTERN\LIB\WIN32\MICROSOFT\MSVC70;和版本有关
2、Project-->Settings-->Link-->Object/Library modules中添加:libeng.lib libmx.lib

编译出来的release版本exe在启动的时候会查找 “libeng.dll”,如果没找到就启动不了> <.
现在我想知道怎么设置VC6让这个release 版本exe在启动的时候不查找这些dll只在用户用
到MATLAB的时候去找?如果找不到就报错但是不退出软件...

试了下动态链接这个“libeng.dll”,发现如果不去掉环境设置里面的第二步,那么软件还是在用静态链接,去掉第二步后就提示所有和MATLAB引擎相关的命令 是unresolved externals:
Linking...
MainFrm.obj : error LNK2001: unresolved external symbol _engOutputBuffer
MainFrm.obj : error LNK2001: unresolved external symbol _engEvalString
MainFrm.obj : error LNK2001: unresolved external symbol _engClose
MainFrm.obj : error LNK2001: unresolved external symbol _engOpen
MainFrm.obj : error LNK2001: unresolved external symbol _engSetVisible
Debug/GETdVG_1.exe : fatal error LNK1120: 5 unresolved externals

总结一下,就是程序不变,还是调用MATLAB引擎,只是将启动程序时载入libeng.dll改成用户触发时载入。
3x~~
...全文
252 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
vb748 2009-11-27
  • 打赏
  • 举报
回复
谢谢大家的建议~~
结贴给分~~
「已注销」 2009-11-26
  • 打赏
  • 举报
回复
要用 Matlab 的那套函数,Matlab的dll就是必须的,7.0以后的版本,运行库有100M,似乎都要安装。关于Matlab与VC混编的东西,去 simwe.com 的Matlab版块,更有针对性一点。
vb748 2009-11-26
  • 打赏
  • 举报
回复
那我有没有可能这样搞:

将matlab的函数放到dll中,然后把dll和exe一起发布,并且不用注册安装任何组件,就像普通的绿色软件一样@@
要达到这样的效果应该使用matlab的combuilde工具还是使用matcom工具呢?bow~~
「已注销」 2009-11-26
  • 打赏
  • 举报
回复
在VC里面使用 Matlab 提供的接口函数,应该是必须用.h+.lib的,除非自己挨个从LoadLibrary去那些dll之中Get函数地址,工作量大,还非常麻烦,当然你还得熟悉各个函数所处的dll文件。VB和Matlab混编没有弄过,不太清楚它是怎么用的。
fandh 2009-11-26
  • 打赏
  • 举报
回复
如果想等到触发条件的时候找,可以通过LoadLibrary装载dll,然后访问函数!这样就行了!这样,与编译没有多大关系了,不要家lib什么文件的了
vb748 2009-11-26
  • 打赏
  • 举报
回复
这个软件我用 vb 以前编写过,功能一样,只是Vb版的程序在启动的时候不会去找libeng.dll,只有在用户触发的时候才去找libeng.dll, 我觉得VB可以做到的,Vc应该也行的...囧
ProgrammerNO1 2009-11-26
  • 打赏
  • 举报
回复
这种情况需要动态加载
bobob 2009-11-26
  • 打赏
  • 举报
回复
试过LoadLibrary没?
fandh 2009-11-26
  • 打赏
  • 举报
回复
说明没有找到lib文件,你看看你设置的lib文件是否设置对了!包括路径、文件名
oyljerry 2009-11-26
  • 打赏
  • 举报
回复
隐式加载dll的方式,你程序link了lib,程序启动的时候要找dll,要么就用动态加载方式,LoadLibrary来动态加载需要的时候
「已注销」 2009-11-26
  • 打赏
  • 举报
回复
这个可能没有办法, libeng.dll 不是动态加载的,使用 Matlab 提供的库函数,是用.h+.lib索引。所以如果是在exe程序里面直接使用Matlab的函数的话,没法实现你要的这个功能。除非,你把与Matlab有关的功能封到一个dll里面,你的程序动态调你的这个dll.

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧