发布于 2018-02-12 07:22:22
您可以从github下载vcpkg,并在Powershell提示符下运行vcpkg.exe (以管理模式打开)。vcpkg可以将许多开源项目(包括静态库和动态库都支持)安装为可以在VS 2017和VS 2015 (SP3) IDE中使用的包。您可以使用选择x86或x64平台,在某些情况下甚至允许选择工具集(例如.\vcpkg安装boost:x64-windows-v141 )。如果您使用“integrate”作为vcpkg命令行,所有库都将自动链接到您的项目,项目.dll文件将自动复制到您的应用程序文件夹中。
因此,在安装vcpkg.exe之后,您可以输入.\vcpkg安装libjpeg-turbo:x64-windows-静态,安装后键入.\vcpkg集成安装。jpeg库将自动链接到您的项目(重新启动VS 2017并享受)。
发布于 2019-02-20 08:45:49
请注意,对于turbojpeg static.lib,除非您自己重新编译libjpegturbo,否则不能使用> for 2010进行编译。
如果可以的话,我建议使用MinGW来构建;可以不带任何问题地使用turbojpeg静态库。
https://github.com/libjpeg-turbo/libjpeg-turbo/issues/45#issuecomment-181690889
第一个问题,您可以通过链接到_snprintf_s来消除未解决的legacy_stdio_definitions.lib符号错误。但是,第二个错误(“未解决的外部符号__iob_func")并不容易解决。这是由于微软最近推出的新的“通用C运行时”库(ucrt)。不幸的是,新的库引入了一些与以前的Microsoft CRT相当严重的不兼容。 提到http://www.libjpeg-turbo.org/Documentation/OfficialBinaries,在libjpeg-turbo中永远不可能完全隔离CRT,因为libjpeg API函数(jpeg_stdio_dest()和jpeg_stdio_src())需要将文件句柄从调用程序传递到库。如果libjpeg API库被用作DLL ( jpeg62.dll ),则调用程序必须与jpeg62.dll共享相同的CRT DLL,否则将文件句柄从一个传递到另一个不能工作(文件指针将指向应用程序或DLL内存空间中的不透明结构,因此指针对另一个没有意义)。 传统上,与静态libjpeg-turbo库链接是可能的,即使使用与编译库所用的不同版本的VisualC++,但显然这从未被支持(https://connect.microsoft.com/VisualStudio/feedback/details/1144980/error-lnk2001-unresolved-external-symbol-imp-iob-func),只是因为不同版本的C++中的C++相当相似。很明显,所有这些都是在引入ucrt之后从窗口消失的。谷歌的错误信息显示,我们并不是唯一的OSS项目遭受这种痛苦。 目前,这是我所知道的唯一的解决办法:
https://stackoverflow.com/questions/48740107
复制相似问题