Visual studio Visual studio 14.0 LNK2001(未解析的外部符号)和OpenCL

Visual studio Visual studio 14.0 LNK2001(未解析的外部符号)和OpenCL,visual-studio,opencl,fpga,intel-fpga,lnk2001,Visual Studio,Opencl,Fpga,Intel Fpga,Lnk2001,我是OpenCL的新手。当我尝试Altera网站上的示例时,我得到了几个LNK2001错误,如下所示 Severity Code Description Project File Line Error LNK2001 unresolved external symbol __imp_sprintf hello_world C:\Users\S_KW\OpenCL\hello_world\alteracl.lib(acl_hal_mmd.obj) 1 Error

我是OpenCL的新手。当我尝试Altera网站上的示例时,我得到了几个LNK2001错误,如下所示

Severity    Code    Description Project File    Line
Error   LNK2001 unresolved external symbol __imp_sprintf    hello_world C:\Users\S_KW\OpenCL\hello_world\alteracl.lib(acl_hal_mmd.obj)  1
Error   LNK2001 unresolved external symbol __imp___iob_func hello_world C:\Users\S_KW\OpenCL\hello_world\alteracl.lib(acl_hal_mmd.obj)  1
Error   LNK2001 unresolved external symbol __imp_fprintf    hello_world C:\Users\S_KW\OpenCL\hello_world\alteracl.lib(acl_hal_mmd.obj)  1
Error   LNK2001 unresolved external symbol __imp_sprintf    hello_world C:\Users\S_KW\OpenCL\hello_world\alteracl.lib(acl_mem.obj)  1
Error   LNK2001 unresolved external symbol __imp___iob_func hello_world C:\Users\S_KW\OpenCL\hello_world\alteracl.lib(acl_offline_hal.obj)  1
Error   LNK2001 unresolved external symbol __imp__set_output_format hello_world C:\Users\S_KW\OpenCL\hello_world\alteracl.lib(acl_printf.obj)   1
Error   LNK2001 unresolved external symbol __imp_fprintf    hello_world C:\Users\S_KW\OpenCL\hello_world\alteracl.lib(acl_profiler.obj) 1
Error   LNK2001 unresolved external symbol __imp_sprintf    hello_world C:\Users\S_KW\OpenCL\hello_world\alteracl.lib(acl_program.obj)  1
Error   LNK2001 unresolved external symbol __imp___iob_func hello_world C:\Users\S_KW\OpenCL\hello_world\alteracl.lib(acl_support.obj)  1
Error   LNK2001 unresolved external symbol __imp_vsprintf   hello_world C:\Users\S_KW\OpenCL\hello_world\alteracl.lib(acl_support.obj)  1
Error   LNK2001 unresolved external symbol __imp_vsnprintf  hello_world C:\Users\S_KW\OpenCL\hello_world\alteracl.lib(acl_support.obj)  1
Error   LNK2001 unresolved external symbol __imp_vfprintf   hello_world C:\Users\S_KW\OpenCL\hello_world\alteracl.lib(acl_support.obj)  1
Error   LNK2001 unresolved external symbol __imp___iob_func hello_world C:\Users\S_KW\OpenCL\hello_world\alteracl.lib(acl_threadsupport.obj)    1
Error   LNK1120 8 unresolved externals  hello_world C:\Users\S_KW\OpenCL\hello_world\bin\hello_world.exe    1
Error       IntelliSense: argument of type "void (*)(const char *errinfo, const void *, size_t, void *)" is incompatible with parameter of type "void (__stdcall *)(const char *, const void *, size_t, void *)"    hello_world c:\Users\S_KW\OpenCL\hello_world\host\src\main.cpp  145
Warning LNK4044 unrecognized option '/LC:\Users\S_KW\arrow_c5sockit_bsp\arm32\lib'; ignored hello_world C:\Users\S_KW\OpenCL\hello_world\LINK   1
Warning LNK4044 unrecognized option '/lalterahalmmd'; ignored   hello_world C:\Users\S_KW\OpenCL\hello_world\LINK   1
Warning LNK4044 unrecognized option '/lalterammdpcie'; ignored  hello_world C:\Users\S_KW\OpenCL\hello_world\LINK   1
Error   LNK2001 unresolved external symbol __imp_vsnprintf  hello_world C:\Users\S_KW\OpenCL\hello_world\MSVCRT.lib(vsnprintf.obj)  1
Error   LNK2001 unresolved external symbol __imp__vsnprintf hello_world C:\Users\S_KW\OpenCL\hello_world\MSVCRT.lib(vsnprintf.obj)  1
Error   LNK2001 unresolved external symbol __imp___iob_func hello_world C:\Users\S_KW\OpenCL\hello_world\pkg_editor.lib(pkg_editor.obj) 1
Error   LNK2001 unresolved external symbol __imp_fprintf    hello_world C:\Users\S_KW\OpenCL\hello_world\pkg_editor.lib(pkg_editor.obj) 1
我已经添加了libs和head文件的路径。我被这些错误弄糊涂了。我能做些什么来解决这个问题

----------------------------更新------------------------------

好的,正如Hadi Burshing所说,我将其添加到了其他依赖项中。所有的旧错误都消失了。但是有一个新的

Severity    Code    Description Project File    Line
Error   LNK1120 1 unresolved externals  hello_world C:\Users\S_KW\OpenCL\hello_world\bin\hello_world.exe    1
Error   LNK2001 unresolved external symbol __imp_sprintf    hello_world C:\Users\S_KW\OpenCL\hello_world\OpenCL.lib(icd_windows.obj)    1
Warning LNK4044 unrecognized option '/LC:\Users\S_KW\arrow_c5sockit_bsp\arm32\lib'; ignored hello_world C:\Users\S_KW\OpenCL\hello_world\LINK   1
Warning LNK4044 unrecognized option '/lalterahalmmd'; ignored   hello_world C:\Users\S_KW\OpenCL\hello_world\LINK   1
Warning LNK4044 unrecognized option '/lalterammdpcie'; ignored  hello_world C:\Users\S_KW\OpenCL\hello_world\LINK   1
我认为,这与OpenCL.lib有关。lib似乎看不到printf函数。但是我认为PrimTF是用C++构建的。这令人困惑。有人知道怎么处理吗?非常感谢

更新: 根据中的讨论,此问题是由VS2015中重新定义stdin/stdout/stderr引起的,Altera OpenCL LIB是使用VS2010构建的。函数调用的不匹配使其在链接阶段失败

可以包括遗留的_stdio_definitions.lib来解决uu imp_vfprintf链接,但不能解决u imp_uiob_func

根据与微软工程师的一次讨论,有两种方法可以克服这一问题:1。将库封装到一个DLL中,该DLL与Altera使用的同一个CRT链接。2.等待Altera更新版本的libs

希望这能有所帮助


我只是想跟进你的问题。 您是否使用Visual Studio 2015运行Altera OpenCL设计? 我得到的错误和你提到的一样。你修好了吗?Thx(ps:似乎同样的设计可以在VS2013上运行,但在VS2015上失败)

更新: 根据中的讨论,此问题是由VS2015中重新定义stdin/stdout/stderr引起的,Altera OpenCL LIB是使用VS2010构建的。函数调用的不匹配使其在链接阶段失败

可以包括遗留的_stdio_definitions.lib来解决uu imp_vfprintf链接,但不能解决u imp_uiob_func

根据与微软工程师的一次讨论,有两种方法可以克服这一问题:1。将库封装到一个DLL中,该DLL与Altera使用的同一个CRT链接。2.等待Altera更新版本的libs

希望这能有所帮助


我只是想跟进你的问题。 您是否使用Visual Studio 2015运行Altera OpenCL设计? 我得到的错误和你提到的一样。你修好了吗?Thx(ps:似乎同样的设计可以在VS2013上运行,但在VS2015上失败)

更新: 根据中的讨论,此问题是由VS2015中重新定义stdin/stdout/stderr引起的,Altera OpenCL LIB是使用VS2010构建的。函数调用的不匹配使其在链接阶段失败

可以包括遗留的_stdio_definitions.lib来解决uu imp_vfprintf链接,但不能解决u imp_uiob_func

根据与微软工程师的一次讨论,有两种方法可以克服这一问题:1。将库封装到一个DLL中,该DLL与Altera使用的同一个CRT链接。2.等待Altera更新版本的libs

希望这能有所帮助


我只是想跟进你的问题。 您是否使用Visual Studio 2015运行Altera OpenCL设计? 我得到的错误和你提到的一样。你修好了吗?Thx(ps:似乎同样的设计可以在VS2013上运行,但在VS2015上失败)

更新: 根据中的讨论,此问题是由VS2015中重新定义stdin/stdout/stderr引起的,Altera OpenCL LIB是使用VS2010构建的。函数调用的不匹配使其在链接阶段失败

可以包括遗留的_stdio_definitions.lib来解决uu imp_vfprintf链接,但不能解决u imp_uiob_func

根据与微软工程师的一次讨论,有两种方法可以克服这一问题:1。将库封装到一个DLL中,该DLL与Altera使用的同一个CRT链接。2.等待Altera更新版本的libs

希望这能有所帮助


我只是想跟进你的问题。 您是否使用Visual Studio 2015运行Altera OpenCL设计?
我得到的错误和你提到的一样。你修好了吗?Thx(ps:似乎同样的设计可以在VS2013上运行,但在VS2015上失败)

有两个步骤可以使在VS2015下构建的项目工作。我使用VS2010
vector\u add
project转换成VS2015,生成编译和链接配置的*.vcxproj中包含的所有
AOCL
任务都保留在那里

1。生成主机可执行文件

在VS2015中,添加到链接器->输入->其他依赖项:

OpenCL.lib
legacy_stdio_definitions.lib
在此阶段,您应该能够运行主机可执行文件,但不会检测到Altera平台

2。将Altera OpenCL平台添加到Windows,以便 任何OpenCL SDK

遵循“Altera SDK for OpenCL编程指南”中的“链接到Windows上的ICD加载程序库”:

特别是第2b点,讨论向Windows注册表添加值:

[HKEY_LOCAL_MACHINE\SOFTWARE\Altera\OpenCL\Boards] 
"c:\\board_vendor a\\my_board_mmd.dll"=dword:00000000


如果仍然找不到Altera OpenCL平台,请确保以下路径位于路径中(注意:由于某些原因%ALTERAOCLSDKROOT%不适用于我,因此路径是硬编码的):
C:\altera\15.0\hld\bin;C:\altera\15.0\hld\host\windows64\bin


我建议首先使用简单的Altera示例项目,即“vector_add”使其工作。

有两个步骤使在VS2015下构建的项目工作。我使用VS2010
vector\u add
project转换成VS2015,生成编译和链接配置的*.vcxproj中包含的所有
AOCL
任务都保留在那里

1。生成主机可执行文件

在VS2015中,添加到链接器->输入->其他依赖项:

OpenCL.lib
legacy_stdio_definitions.lib
在此阶段,您应该能够运行主机可执行文件,但不会检测到Altera平台

2。将Altera OpenCL平台添加到Windows,以便