0

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?

Andre
  • 69
  • 1
  • 1
  • 7

1 Answers1

0

Had the same problem with Visual Studio 2015 compilation, resulting in the following error when running the exe:

../../Infra/src/ftdi_infra.c:261:Init_libMPSSE(): NULL expression encountered.

It was running fine on another machine using Visual Studio 2013, so I just installed 2013 version on the new dev computer. Afterwards while running Visual Studio 2015, I changed the toolset from vs140(2015) to vs120(2013) and everything works as expected.

Most likely there is a more simple method, but this worked for me.

MBenn
  • 1