我在我的c代码中使用Lindo软件,我想通过Matlab来使用它。
我在使用mex文件时遇到这些问题:
mex ex_sdp1.c
Creating library C:\Users\AZINRA~1\AppData\Local\Temp\mex_n9pt9A\templib.x and object C:\Users\AZINRA~1\AppData\Local\Temp\mex_n9pt9A\templib.exp
ex_sdp1.obj : error LNK2019: unresolved external symbol LScreateEnv referenced in function mexFunction
ex_sdp1.obj : error LNK2019: unresolved external symbol LScreateModel referenced in function mexFunction
ex_sdp1.obj : error LNK2019: unresolved external symbol LSdeleteEnv referenced in function mexFunction
ex_sdp1.obj : error LNK2019: unresolved external symbol LSdeleteModel referenced in function mexFunction
ex_sdp1.obj : error LNK2019: unresolved external symbol LSloadLicenseString referenced in function mexFunction
ex_sdp1.obj : error LNK2019: unresolved external symbol LSgetVersionInfo referenced in function mexFunction
ex_sdp1.obj : error LNK2019: unresolved external symbol LSgetErrorMessage referenced in function mexFunction
ex_sdp1.obj : error LNK2019: unresolved external symbol LSloadInstruct referenced in function mexFunction
ex_sdp1.obj : error LNK2019: unresolved external symbol LSoptimizeQP referenced in function mexFunction
ex_sdp1.obj : error LNK2019: unresolved external symbol LSgetInfo referenced in function mexFunction
ex_sdp1.obj : error LNK2019: unresolved external symbol LSgetPrimalSolution referenced in function mexFunction
ex_sdp1.obj : error LNK2019: unresolved external symbol LSgetDualSolution referenced in function mexFunction
ex_sdp1.obj : error LNK2019: unresolved external symbol LSgetVariableNamej referenced in function mexFunction
ex_sdp1.obj : error LNK2019: unresolved external symbol LSgetConstraintNamei referenced in function mexFunction
ex_sdp1.obj : error LNK2019: unresolved external symbol LSsetModelLogfunc referenced in function mexFunction
ex_sdp1.mexw64 : fatal error LNK1120: 15 unresolved externals
C:\PROGRA~1\MATLAB\R2013A\BIN\MEX.PL: Error: Link of 'ex_sdp1.mexw64' failed.
我该如何修理它们?
我的include文件位于路径C:\ Lindoapi \ include和C:\ Lindoapi \ lib \ win32 \ lindo9_0.lib中的库 所以我添加这些句子: ' mex ex_sdp1.c -L 使用' Microsoft Visual C ++ 2012'构建。 使用mex时出错 访问被拒绝。 mex ex_sdp1.c -L -l 使用mex时出错 MEX找不到图书馆''使用-l选项指定。 MEX查找具有以下名称之一的文件: 的.lib lib.lib 请使用-L选项指定此库的路径 mex ex_sdp1.c -L -I 使用' Microsoft Visual C ++ 2012'构建。 使用mex时出错 访问被拒绝。 mex ex_sdp1.c -L -I -l 使用mex时出错 MEX找不到图书馆''使用-l选项指定。 MEX查找具有以下名称之一的文件: 的.lib lib.lib 请使用-L选项'
指定此库的路径答案 0 :(得分:0)
这些函数名称不是标准的C函数,也许来自某些与windows相关的库。
在任何情况下,makefile(或命令行)中的link语句都需要包含相应的库。
对于gcc,在linux上,通过将以下参数附加到将文件链接在一起的语句来包含库
-LpathToLibrary -lshortLibraryName
例如正在使用数学库
在源文件中:
#include <math.h>
并在编译命令中附加以下内容
-I/usr/include
并在链接命令中添加以下内容
-L/usr/lib/ -lm
对于Windows操作系统,对于不同的编译器,细节会有所不同。
例如,如果使用visual studio,库路径和库名称以及包含文件路径将成为当前项目设置的一部分
答案 1 :(得分:0)
这个特殊的示例ex_sdp1.c是LINDO API C / C ++示例的一部分,它是不一个现成的Matlab就绪代码,您可以使用'mex'构建。
首先,尝试构建并运行示例作为独立应用程序,即在Matlab框架之外。一旦成功,您实际上可以在M文件的形式中编写相同应用程序的Matlab版本。 Matlab中有几个使用LINDO API的Matlab示例(M文件),使用'mxlindo'接口。说明如何使用'mxlindo'的matlab示例位于'lindoapi / matlab'下。查看'lindoapi / matlab / readme.txt'以便快速入门。