I'm using VS2015 to make a simple SPI interface using an FTDI MPSSE cable. They supply the following files to use as an interface to their hardware.
libMPSSE.a
libMPSSE.lib
libMPSSE.dll
libMPSSE.h
libMPSSE_spi.h
I'm using a simple project just to try and initalise the library and test the cable. I have tried linking against both the .a and the .lib but both of them throw the following error
1>------ Build started: Project: SPI_interface, Configuration: Release Win32 ------
1>MSVCRT.lib(_secchk_.obj) : warning LNK4078: multiple '.drectve' sections found with different attributes (00100A00)
1>libMPSSE.a(ftdi_infra.o) : error LNK2001: unresolved external symbol _printf
1>C:\Users\Sammys\Documents\Visual Studio 2015\Projects\SPI_interface\Release\SPI_interface.exe : fatal error LNK1120: 1 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
I also tried creating my own .DEF and .lib from the dll, this compiles but instantly exits with code 0x1.
Here's the verbose output from the linker.
1>------ Build started: Project: SPI_interface, Configuration: Release Win32 ------
1>
1> Searching libraries
1> Searching libMPSSE.a:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\kernel32.lib:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\user32.lib:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\gdi32.lib:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\winspool.lib:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\comdlg32.lib:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\advapi32.lib:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\shell32.lib:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\ole32.lib:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\oleaut32.lib:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\uuid.lib:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\odbc32.lib:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\odbccp32.lib:
1> Searching C:\Program Files\Microsoft Visual Studio 14.0\VC\lib\msvcprt.lib:
1> Searching C:\Program Files\Microsoft Visual Studio 14.0\VC\lib\MSVCRT.lib:
1>MSVCRT.lib(_secchk_.obj) : warning LNK4078: multiple '.drectve' sections found with different attributes (00100A00)
1> Searching C:\Program Files\Microsoft Visual Studio 14.0\VC\lib\OLDNAMES.lib:
1> Searching C:\Program Files\Microsoft Visual Studio 14.0\VC\lib\vcruntime.lib:
1> Searching C:\Program Files\Windows Kits\10\lib\10.0.10150.0\ucrt\x86\ucrt.lib:
1> Searching libMPSSE.a:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\kernel32.lib:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\user32.lib:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\gdi32.lib:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\winspool.lib:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\comdlg32.lib:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\advapi32.lib:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\shell32.lib:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\ole32.lib:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\oleaut32.lib:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\uuid.lib:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\odbc32.lib:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\odbccp32.lib:
1> Searching C:\Program Files\Microsoft Visual Studio 14.0\VC\lib\msvcprt.lib:
1> Searching C:\Program Files\Microsoft Visual Studio 14.0\VC\lib\MSVCRT.lib:
1> Searching C:\Program Files\Microsoft Visual Studio 14.0\VC\lib\OLDNAMES.lib:
1> Searching C:\Program Files\Microsoft Visual Studio 14.0\VC\lib\vcruntime.lib:
1> Searching C:\Program Files\Windows Kits\10\lib\10.0.10150.0\ucrt\x86\ucrt.lib:
1> Searching libMPSSE.a:
1>
1> Finished searching libraries
1>
1> Searching libraries
1> Searching libMPSSE.a:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\kernel32.lib:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\user32.lib:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\gdi32.lib:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\winspool.lib:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\comdlg32.lib:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\advapi32.lib:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\shell32.lib:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\ole32.lib:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\oleaut32.lib:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\uuid.lib:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\odbc32.lib:
1> Searching C:\Program Files\Windows Kits\8.1\lib\winv6.3\um\x86\odbccp32.lib:
1> Searching C:\Program Files\Microsoft Visual Studio 14.0\VC\lib\msvcprt.lib:
1> Searching C:\Program Files\Microsoft Visual Studio 14.0\VC\lib\MSVCRT.lib:
1> Searching C:\Program Files\Microsoft Visual Studio 14.0\VC\lib\OLDNAMES.lib:
1> Searching C:\Program Files\Microsoft Visual Studio 14.0\VC\lib\vcruntime.lib:
1> Searching C:\Program Files\Windows Kits\10\lib\10.0.10150.0\ucrt\x86\ucrt.lib:
1>
1> Finished searching libraries
1>libMPSSE.a(ftdi_spi.o) : error LNK2001: unresolved external symbol _printf
1>libMPSSE.a(ftdi_infra.o) : error LNK2001: unresolved external symbol _printf
1>C:\Users\Sammys\Documents\Visual Studio 2015\Projects\SPI_interface\Release\SPI_interface.exe : fatal error LNK1120: 1 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
The frustrating part is that I got this working on 2010 a few years ago but I can't remember what I did at all.
Any ideas why it's not finding the printf function?
EDIT: Update. It seems the library initialization function throws an error when I load it, hence why it seemed to just exit.
../../Infra/src/ftdi_infra.c:261:Init_libMPSSE(): NULL expression encountered
I'm assuming this is to do with the apparently missing _printf function? Would that be correct?