gpt4 book ai didi

c++ - 如何修复从 cmake 生成的 Visual Studio 项目中包含的错误

转载 作者:太空宇宙 更新时间:2023-11-04 13:59:01 25 4
gpt4 key购买 nike

请滚动到底部以列出更新的简短问题

我正在 build PoDoFo .在最后一步,我使用 cmake 为 PoDoFo 创建 Visual Studio 2010 .sln 文件。但是当我构建这个解决方案文件时,它找不到依赖库的头文件。例如,它没有找到 boost 库头文件。

c:\pdf\podofo-0.9.1\src\base\PdfDefines.h(66): fatal error C1083: Cannot open include file: 'boost/config.hpp': No such file or directory

如果我禁用 boost,对于 freetype 库 header 我会得到类似的错误

2>..\..\src\doc\PdfFontCache.cpp(55): fatal error C1083: Cannot open include file: 'ft2build.h': No such file or directory

这是我的 build.cmd 文件

del cmakecache.txt

set BOOST_ROOT=C:\pdf\boost_1_51_0_code
set BOOST_INCLUDE_DIR=C:\pdf\boost\boost_1_51_0\staging\include
set BOOSTLIBDIR=C:\workspace\lib\boost\boost_1_51_0\staging\lib

set FT_INCLUDE=C:\PDF\freetype-2.4.0\include\freetype


set FTDIR=C:\PDF\freetype-2.4.0\objs\win32\vc2008
set JPEGDIR=C:\PDF\jpeg-8d\Release\lib
set TIFDIR=C:\PDF\tiff-4.0.3\lib
set ZLIBDIR=C:\pdf\zlib-1.2.8


set BUILD_FLAGS="/MT"

cmake -G "Visual Studio 10" "C:\pdf\podofo-0.9.1" ^
-DCMAKE_CXX_FLAGS_RELEASE:STRING=%BUILD_FLAGS% ^
-DFREETYPE_INCLUDE_DIR=%FT_INCLUDE% ^
-DLIBJPEG_LIBRARY_RELEASE=jpeg ^
-DCMAKE_INCLUDE_PATH="%INCLUDE%;%BOOST_INCLUDE_DIR%;%FT_INCLUDE%;%FT_INCLUDE%\freetype;%JPEGDIR%\jpeg;%TIFDIR%\tiff;%ZLIBDIR%\zlib" ^
-DCMAKE_LIBRARY_PATH="%LIB%;%BOOSTLIBDIR%;%FTDIR%;%JPEGDIR%\lib;%TIFDIR%;%ZLIBDIR%\lib" ^
-DPODOFO_BUILD_SHARED:BOOL=FALSE ^
-DPODOFO_BUILD_STATIC:BOOL=TRUE ^
-DWANT_BOOST:BOOL=0 ^
-DLIBJPEG_LIBRARY_NAMES_RELEASE=jpeg ^
-DFREETYPE_LIBRARY_NAMES_RELEASE=freetype240MT ^
-DZLIB_LIBRARY_NAMES_RELEASE=zlibstat

我是 CMake 的新手,我不明白库依赖项如何传递到 Visual Studio 项目?

这是生成的解决方案文件中路径的屏幕截图。我不明白这些路径是如何从小脚本文件中传递出来的?它们并不完全对应于 DCMAKE_LIBRARY_PATH 那么它们来自哪里?

Project paths in visual studio project - what part of script file them come from?

如何修复解决方案文件中的这些包含错误?我尝试将这些路径添加到 Project Properites >> VC++ Directories >> 'Include Directories' 但它仍然不想构建。恐怕即使我消除了这些包含错误,我也会收到链接器错误,因为库路径也可能不正确。如何修复这些错误并构建项目?谢谢。

更新问题

我通过将路径更改为以下内容来修复包含错误:

FT_INCLUDE=C:\PDF\freetype-2.4.0\include\

现在正如我所料,我收到了很多链接器错误。但是我注意到它确实创建了 PoDoFo.lib 文件,所以现在我尝试在示例演示中使用它。我也成功编译了它,但我收到以下链接器错误:

1>podofo.lib(PdfFont.obj) : error LNK2001: unresolved external symbol @__security_check_cookie@4
1>podofo.lib(PdfDifferenceEncoding.obj) : error LNK2001: unresolved external symbol @__security_check_cookie@4
1>podofo.lib(PdfFontSimple.obj) : error LNK2001: unresolved external symbol @__security_check_cookie@4
1>podofo.lib(PdfIdentityEncoding.obj) : error LNK2001: unresolved external symbol @__security_check_cookie@4
1>podofo.lib(PdfFontTrueType.obj) : error LNK2001: unresolved external symbol @__security_check_cookie@4
1>podofo.lib(PdfFontMetricsObject.obj) : error LNK2001: unresolved external symbol @__security_check_cookie@4
1>podofo.lib(PdfEncodingObjectFactory.obj) : error LNK2001: unresolved external symbol @__security_check_cookie@4

我确实确保在项目设置中添加了依赖库以及路径,但为什么我仍然会收到这些错误?

最佳答案

与其直接使用 nmake,我建议您使用 cmake-gui 来构建 PoDoFo。不要编写自己的 build.cmd,因为这在大多数情况下不起作用。注意:下面描述的方法使用你的方法,不要照搬它。使用 cmake-gui(如果您不知道 cmake 或 nmake 的工作原理)。

好吧,我建议您访问此站点并找到引用资料:Building static podofo with MSVS 2012好吧,我想这应该适用于 Visual Studio 2010。记住:

构建必备库 - 此站点还包含有关如何继续构建这些库的链接。但是,我假设您已经构建了它们。但是,我建议根据本教程再次构建它们。

Instructions : 照他说的做。不要错过任何关于预处理器定义、运行时库和所有相同参数的选项。如果您错过任何事情或做错了什么,这将迫使您从开始的地方重新开始。

错误:我自己在执行相同的过程时遇到了很多错误,这个网站没有提供任何解释。常见错误包括:

Unresolved external 问题(使用 msvcrt.lib 或 libcmt.lib)。在这种情况下,只需转至“链接器”>“输入”>“忽略特定库”并在此处命名该库即可忽略它。有时会出现随机错误。我建议查找 Stack Overflow 本身或 MSDN 或 Google,因为在开始时遇到 >2500 个错误后,我终于能够构建一个静态库。

不得已:如果一切都失败了,请联系我(如果您仍然感兴趣!)。

关于c++ - 如何修复从 cmake 生成的 Visual Studio 项目中包含的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20080598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com