Error LNK2019: unresolved external symbol *function* referenced in function _mexFunction
7 views (last 30 days)
Show older comments
I am attempting to build a short mex file to control an external motion card running stepper motors. The motion controller is supplied with a function library and header to be used in C/C++.
I have developed a C Project, built in VS2015 which controls the stepper motors through the external library functions, however when attempting to build a mex file to do this, which links to the external library, I get a LNK2019 Error.
I have also tried placing the header and lib files in the matlab extern locations aswell as the VS extern locations.
I am new to using mex files, however I have trawled through stack and mathworks trying solutions to similar problems, but unfortunately nothing has worked. I have also tried unistalling and reinstalling both matlab and VS incase it was a compiler issue. Now I'm truly stuck!
This is the .c file
#include "mex.h"
#include "DMC2410.h"
#include <math.h>
#include <stdio.h>
void move(double *Ni)
{
double temp;
/*Motion Card Functions*/
d2410_board_init();
// d2410_set_pulse_outmode(0,0);
// d2410_set_profile(0,500,1000,0.1,0.1);
// d2410_t_pmove(0,10000,0);
// d2410_decel_stop(0,0.01);
// d2410_board_close();
//Test if other library functions are working
temp=*Ni;
temp=sqrt(temp);
printf("%d", 'temp' );
}
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
double *Ni;
/*Get the data */
Ni = mxGetPr(prhs[0]); //Get the original data
printf("Ni=%d\n",Ni[0]);
/*Call the c subroutine*/
move(Ni);
}
end
This is the output when using the mex command with verbose
>> mex -win32 -v -LC:Users\Student\Documents\MATLAB\Tests -lDMC2410 move.c
Verbose mode is on.
Neither -compatibleArrayDims nor -largeArrayDims is selected.
Using -compatibleArrayDims. In the future, MATLAB will require the use of
-largeArrayDims and remove the -compatibleArrayDims option.
For more information:
http://www.mathworks.com/help/matlab/matlab_external/upgrading-mex-files-to-use-64-bit-api.html.
... Looking for compiler 'Microsoft Visual C++ 2015 Professional (C)' ...
... Looking for registry setting 'HKLM\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' 14.0 ...Yes ('C:\Program Files\Microsoft Visual Studio 14.0\').
... Looking for file 'C:\Program Files\Microsoft Visual Studio 14.0\VC\bin\cl.exe' ...Yes.
... Looking for folder 'C:\Program Files\Microsoft Visual Studio 14.0\VC' ...Yes.
... Looking for registry setting 'HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.1' InstallationFolder ...Yes ('C:\Program Files\Windows Kits\8.1\').
... Looking for registry setting 'HKLM\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' 14.0 ...Yes ('C:\Program Files\Microsoft Visual Studio 14.0\').
... Looking for registry setting 'HKLM\SOFTWARE\Microsoft\VisualStudio\SxS\VC7' 14.0 ...Yes ('C:\Program Files\Microsoft Visual Studio 14.0\VC\').
... Looking for environment variable 'VS140COMNTOOLS' ...Yes ('C:\Program Files\Microsoft Visual Studio 14.0\Common7\Tools\').
... Looking for file 'C:\Program Files\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe' ...Yes.
... Looking for registry setting 'HKLM\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' 14.0 ...Yes ('C:\Program Files\Microsoft Visual Studio 14.0\').
... Looking for file 'C:\Program Files\Microsoft Visual Studio 14.0\VC\vcvarsall.bat' ...Yes.
... Looking for folder 'C:\Program Files\Microsoft Visual Studio 14.0\VC' ...Yes.
... Looking for registry setting 'HKLM\SOFTWARE\Microsoft\Windows Kits\Installed Roots' KitsRoot10 ...Yes ('C:\Program Files\Windows Kits\10\').
Found installed compiler 'Microsoft Visual C++ 2015 Professional (C)'.
Set PATH = C:\Program Files\Microsoft Visual Studio 14.0\VC\Bin;C:\Program Files\Microsoft Visual Studio 14.0\VC\Bin\VCPackages;C:\Program Files\Microsoft Visual Studio 14.0\VC\..\Common7\IDE;C:\Program Files\Microsoft Visual Studio 14.0\VC\..\Common7\Tools;C:\Program Files\Windows Kits\8.1\\Bin\x86;;C:\Program Files\Intel\iCLS Client\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Microsoft Windows Performance Toolkit\;C:\WINDOWS\system32\config\systemprofile\.dnx\bin;C:\Program Files\Microsoft DNX\Dnvm\;C:\Program Files\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\MATLAB\R2015b\runtime\win32;C:\Program Files\MATLAB\R2015b\bin;C:\Program Files\MATLAB\R2015b\toolbox\imaq\imaqextern\drivers\win32\genicam\GenICam_v2_3\bin\Win32_i86
Set INCLUDE = C:\Program Files\Microsoft Visual Studio 14.0\VC\INCLUDE;C:\Program Files\Microsoft Visual Studio 14.0\VC\ATLMFC\INCLUDE;C:\Program Files\Windows Kits\10\\include\10.0.10150.0\ucrt;C:\Program Files\Windows Kits\8.1\\include\shared;C:\Program Files\Windows Kits\8.1\\include\um;C:\Program Files\Windows Kits\8.1\\include\winrt;C:\Program Files\MATLAB\R2015b\extern\include;
Set LIB = C:\Program Files\Microsoft Visual Studio 14.0\VC\Lib;C:\Program Files\Microsoft Visual Studio 14.0\VC\ATLMFC\Lib;C:\Program Files\Windows Kits\10\\Lib\10.0.10150.0\ucrt\x86;C:\Program Files\Windows Kits\8.1\\lib\winv6.3\um\x86;C:\Program Files\MATLAB\R2015b\lib\win32;
Set LIBPATH = C:\Program Files\Microsoft Visual Studio 14.0\VC\Lib;C:\Program Files\Microsoft Visual Studio 14.0\VC\ATLMFC\Lib;
Options file details
-------------------------------------------------------------------
Compiler location: C:\Program Files\Microsoft Visual Studio 14.0\VC\..\
Options file: C:\Users\Student\AppData\Roaming\MathWorks\MATLAB\R2015b\mex_C_win32.xml
CMDLINE100 : cl /c /Zp8 /GR /W3 /EHs /nologo /MD /O2 /Oy- /DNDEBUG /DMX_COMPAT_32 /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE -I"C:\Program Files\MATLAB\R2015b\extern\include" -I"C:\Program Files\MATLAB\R2015b\simulink\include" C:\Users\Student\Documents\MATLAB\Tests\move.c /FoC:\Users\Student\AppData\Local\Temp\mex_35494891083058_5244\move.obj
CMDLINE200 : link /nologo /manifest /DLL /EXPORT:mexFunction C:\Users\Student\AppData\Local\Temp\mex_35494891083058_5244\move.obj DMC2410.lib /LIBPATH:C:Users\Student\Documents\MATLAB\Tests /LIBPATH:"C:\Program Files\MATLAB\R2015b\extern\lib\win32\microsoft" libmx.lib libmex.lib libmat.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /out:move.mexw32
CMDLINE250 : mt -outputresource:move.mexw32;2 -manifest move.mexw32.manifest
CMDLINE300 : del move.exp move.lib move.mexw32.manifest move.ilk
COMPILER : cl
COMPFLAGS : /Zp8 /GR /W3 /EHs /nologo /MD
COMPDEFINES : /DMX_COMPAT_32 /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE
MATLABMEX : /DMATLAB_MEX_FILE
OPTIMFLAGS : /O2 /Oy- /DNDEBUG
INCLUDE : -I"C:\Program Files\MATLAB\R2015b\extern\include" -I"C:\Program Files\MATLAB\R2015b\simulink\include"
DEBUGFLAGS : /Z7
LINKER : link
LINKFLAGS : /nologo /manifest
LINKTYPE : /DLL
LINKEXPORT : /EXPORT:mexFunction
LINKLIBS : DMC2410.lib /LIBPATH:C:Users\Student\Documents\MATLAB\Tests /LIBPATH:"C:\Program Files\MATLAB\R2015b\extern\lib\win32\microsoft" libmx.lib libmex.lib libmat.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib
LINKDEBUGFLAGS : /debug /PDB:"move.mexw32.pdb"
LINKOPTIMFLAGS :
OBJEXT : .obj
LDEXT : .mexw32
SETENV : set COMPILER=cl
set COMPFLAGS=/c /Zp8 /GR /W3 /EHs /nologo /MD /DMX_COMPAT_32 /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /DMATLAB_MEX_FILE
set OPTIMFLAGS=/O2 /Oy- /DNDEBUG
set DEBUGFLAGS=/Z7
set LINKER=link
set LINKFLAGS=/nologo /manifest /export:%ENTRYPOINT% /DLL libDMC2410.lib DMC2410.lib /LIBPATH:C:Users\Student\Documents\MATLAB\Tests /LIBPATH:"C:\Program Files\MATLAB\R2015b\extern\lib\win32\microsoft" libmx.lib libmex.lib libmat.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /EXPORT:mexFunction
set LINKDEBUGFLAGS=/debug /PDB:"%OUTDIR%%MEX_NAME%.mexw32.pdb"
set NAME_OUTPUT=/out:"%OUTDIR%%MEX_NAME%%MEX_EXT%"
VCROOT : C:\Program Files\Microsoft Visual Studio 14.0\VC
SDKROOT : C:\Program Files\Windows Kits\8.1\
VSINSTALLDIR : C:\Program Files\Microsoft Visual Studio 14.0\
VCINSTALLDIR : C:\Program Files\Microsoft Visual Studio 14.0\VC\
PROF_ENV : C:\Program Files\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe
VCVARSALLDIR : C:\Program Files\Microsoft Visual Studio 14.0\VC
KITSROOT : C:\Program Files\Windows Kits\10\
MATLABROOT : C:\Program Files\MATLAB\R2015b
ARCH : win32
SRC : C:\Users\Student\Documents\MATLAB\Tests\move.c
OBJ : C:\Users\Student\AppData\Local\Temp\mex_35494891083058_5244\move.obj
OBJS : C:\Users\Student\AppData\Local\Temp\mex_35494891083058_5244\move.obj
SRCROOT : C:\Users\Student\Documents\MATLAB\Tests\move
DEF : C:\Users\Student\AppData\Local\Temp\mex_35494891083058_5244\move.def
EXP : move.exp
LIB : move.lib
EXE : move.mexw32
ILK : move.ilk
MANIFEST : move.mexw32.manifest
TEMPNAME : move
EXEDIR :
EXENAME : move
OPTIM : /O2 /Oy- /DNDEBUG
LINKOPTIM :
-------------------------------------------------------------------
Building with 'Microsoft Visual C++ 2015 Professional (C)'.
cl /c /Zp8 /GR /W3 /EHs /nologo /MD /O2 /Oy- /DNDEBUG /DMX_COMPAT_32 /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE -I"C:\Program Files\MATLAB\R2015b\extern\include" -I"C:\Program Files\MATLAB\R2015b\simulink\include" C:\Users\Student\Documents\MATLAB\Tests\move.c /FoC:\Users\Student\AppData\Local\Temp\mex_35494891083058_5244\move.obj
move.c
link /nologo /manifest /DLL /EXPORT:mexFunction C:\Users\Student\AppData\Local\Temp\mex_35494891083058_5244\move.obj DMC2410.lib /LIBPATH:C:Users\Student\Documents\MATLAB\Tests /LIBPATH:"C:\Program Files\MATLAB\R2015b\extern\lib\win32\microsoft" libmx.lib libmex.lib libmat.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /out:move.mexw32
Error using mex
Creating library move.lib and object move.exp
move.obj : error LNK2019: unresolved external symbol _d2410_board_init@0 referenced
in function _mexFunction
move.mexw32 : fatal error LNK1120: 1 unresolved externals
0 Comments
Answers (1)
Bruce Qian
on 30 Aug 2016
Hi, Your problem might be solved by replacing the library file by a win32 version library. I guess that your library file is compiled and generated in a x64 or arm platform which can't be used here.
0 Comments
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!