我在 mex 文件中有一些问题
i have some problems in mex file
我在我的 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.
我该如何修复它们?
我的包含文件在路径 C:\Lindoapi\include 中,库在 C:\Lindoapi\lib\win32\lindo9_0.lib
所以我添加了这些句子:
' mex ex_sdp1.c -L
用 'Microsoft Visual C++ 2012' 构建。
使用 mex 时出错
访问被拒绝。
墨西哥 ex_sdp1.c -L -l
使用 mex 时出错
MEX 找不到用 -l 选项指定的库“”。
MEX 查找具有以下名称之一的文件:
.lib
lib.lib
请使用 -L 选项指定此库的路径。
墨西哥 ex_sdp1.c -L -I
用 'Microsoft Visual C++ 2012' 构建。
使用 mex 时出错
访问被拒绝。
墨西哥 ex_sdp1.c -L -I -l
使用 mex 时出错
MEX 找不到用 -l 选项指定的库“”。
MEX 查找具有以下名称之一的文件:
.lib
lib.lib
请使用 -L 选项指定此库的路径'
这些函数名称不是标准的 C 函数,可能来自某些 windows 相关库。
无论如何,makefile(或命令行)中的 link 语句需要包含适当的库。
对于 gcc,在 linux 上,将通过将以下参数附加到 link 将文件放在一起的语句来包含库
-LpathToLibrary -lshortLibraryName
例如当时正在使用的数学库
在源文件中:
#include <math.h>
并在编译命令中追加以下内容
-I/usr/include
并在 link 命令中附加以下内容
-L/usr/lib/ -lm
对于 windows OS,对于不同的编译器,细节会有所不同。
例如,如果使用 visual studio,库路径和库名称以及包含文件路径将成为当前项目设置的一部分
这个特定的样本 ex_sdp1.c 是 LINDO API C/C++ 样本的一部分,它是 不是 一个现成的-shelf 可以使用 'mex' 构建的 Matlab 就绪代码。
首先,尝试将示例构建并 运行 作为独立应用程序,即在 Matlab 框架之外。一旦成功,您实际上可以以 M 文件的形式编写同一应用程序的 Matlab 版本。有几个使用 LINDO API 的 Matlab 示例(M 文件)来自使用 'mxlindo' 接口的 Matlab。说明如何使用 'mxlindo' 的 Matlab 示例在 'lindoapi/matlab' 下。查看 'lindoapi/matlab/readme.txt' 以快速入门。
我在我的 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.
我该如何修复它们?
我的包含文件在路径 C:\Lindoapi\include 中,库在 C:\Lindoapi\lib\win32\lindo9_0.lib
所以我添加了这些句子:
' mex ex_sdp1.c -L
用 'Microsoft Visual C++ 2012' 构建。
使用 mex 时出错
访问被拒绝。
墨西哥 ex_sdp1.c -L -l
使用 mex 时出错
MEX 找不到用 -l 选项指定的库“”。
MEX 查找具有以下名称之一的文件:
.lib
lib.lib
请使用 -L 选项指定此库的路径。
墨西哥 ex_sdp1.c -L -I
用 'Microsoft Visual C++ 2012' 构建。
使用 mex 时出错
访问被拒绝。
墨西哥 ex_sdp1.c -L -I -l
使用 mex 时出错
MEX 找不到用 -l 选项指定的库“”。
MEX 查找具有以下名称之一的文件:
.lib
lib.lib
请使用 -L 选项指定此库的路径'
这些函数名称不是标准的 C 函数,可能来自某些 windows 相关库。
无论如何,makefile(或命令行)中的 link 语句需要包含适当的库。
对于 gcc,在 linux 上,将通过将以下参数附加到 link 将文件放在一起的语句来包含库
-LpathToLibrary -lshortLibraryName
例如当时正在使用的数学库
在源文件中:
#include <math.h>
并在编译命令中追加以下内容
-I/usr/include
并在 link 命令中附加以下内容
-L/usr/lib/ -lm
对于 windows OS,对于不同的编译器,细节会有所不同。
例如,如果使用 visual studio,库路径和库名称以及包含文件路径将成为当前项目设置的一部分
这个特定的样本 ex_sdp1.c 是 LINDO API C/C++ 样本的一部分,它是 不是 一个现成的-shelf 可以使用 'mex' 构建的 Matlab 就绪代码。
首先,尝试将示例构建并 运行 作为独立应用程序,即在 Matlab 框架之外。一旦成功,您实际上可以以 M 文件的形式编写同一应用程序的 Matlab 版本。有几个使用 LINDO API 的 Matlab 示例(M 文件)来自使用 'mxlindo' 接口的 Matlab。说明如何使用 'mxlindo' 的 Matlab 示例在 'lindoapi/matlab' 下。查看 'lindoapi/matlab/readme.txt' 以快速入门。