Error LNK2019: unresolved external symbol *function* referenced in function _mexFunction

7 views (last 30 days)
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

Answers (1)

Bruce Qian
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.

Categories

Find more on Word games in Help Center and File Exchange

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!