未解析的符号,提供 FTDI 库

unresolved symbol with supplied FTDI library

提问人:Andre 提问时间:10/29/2015 最后编辑:Andre 更新时间:3/17/2016 访问量:723

问:

我正在使用 VS2015 使用 FTDI MPSSE 电缆制作一个简单的 SPI 接口。它们提供以下文件以用作其硬件的接口。

libMPSSE.a
libMPSSE.lib
libMPSSE.dll
libMPSSE.h
libMPSSE_spi.h

我正在使用一个简单的项目来尝试启动库并测试电缆。我尝试过针对 .a 和 .lib 进行链接,但它们都抛出以下错误

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 ==========

我也尝试创建自己的.DEF 和 .lib,这会编译,但会立即退出并0x1代码。

下面是链接器的详细输出。

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 ==========

令人沮丧的是,几年前我在 2010 年开始了这项工作,但我完全不记得我做了什么。

任何想法为什么它找不到 printf 函数?

编辑:更新。似乎库初始化函数在我加载它时会抛出错误,因此它似乎只是退出。

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

我假设这与明显缺少_printf功能有关?这是正确的吗?

C++ 静态库 链接器错误未 解决外部

评论


答:

0赞 MBenn 3/17/2016 #1

Visual Studio 2015 编译存在同样的问题,导致运行 exe 时出现以下错误:

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

它在使用 Visual Studio 2013 的另一台计算机上运行良好,所以我只是在新的开发计算机上安装了 2013 版本。 之后,在运行 Visual Studio 2015 时,我将工具集从 vs140(2015) 更改为 vs120(2013),一切按预期工作。

很可能有一种更简单的方法,但这对我有用。