Пожалуйста, прокрутите вниз, чтобы перечислить обновленный короткий вопрос
Я строю PoDoFo. На последнем этапе я использую cmake для создания файла Visual Studio 2010 .sln для PoDoFo. Однако, когда я строю этот файл решения, он не может найти заголовочные файлы зависимых библиотек. Например, он не находит заголовочные файлы библиотеки надстроек.
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
Если я отключаю повышение, я получаю аналогичную ошибку для заголовков библиотеки freetype
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\freetypeset 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.8set 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
так откуда они берутся?
Как я могу исправить эти ошибки в файле решения? Я попытался добавить эти пути в свойства проекта >> Каталоги VC ++ >> ‘Включить каталоги’, но он все еще не хочет создавать. Я боюсь, что даже если я устраню эти ошибки включения, я получу ошибки компоновщика, потому что пути к библиотекам, вероятно, тоже неверны. Как я могу исправить эти ошибки и получить проект для сборки? Благодарю.
Обновленный вопрос
Я исправил ошибку включения, изменив путь к:
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).
Ну, я рекомендую вам зайти на этот сайт и найти ссылки: Построение статического подофо с MSVS 2012 Ну, я думаю, это должно работать для Visual Studio 2010. Помните:
Создание необходимых библиотек — На этом сайте также есть ссылки о том, как продолжить создание этих библиотек. Тем не менее, я предполагаю, что вы уже построили их. Однако я бы порекомендовал построить их заново в соответствии с этим уроком.
инструкции Делай, как он говорит. Не пропустите ни одной опции, касающейся определений препроцессора, библиотек времени выполнения и всех одинаковых параметров. Если вы что-то пропустили или сделали что-то не так, это заставит вас перезапустить с того места, с которого вы начали.
ошибки Я сам испытал много ошибок при выполнении той же процедуры, и этот сайт не дает объяснений. Распространенные ошибки включают в себя:
Нерешенные внешние (либо с помощью msvcrt.lib или libcmt.lib). В этом случае просто зайдите в Linker> Input> Ignore определённые библиотеки и назовите эту библиотеку там, чтобы просто игнорировать ее.
Иногда будут случайные ошибки. Я бы предложил поискать сам Stack Overflow, MSDN или Google, потому что, начав с> 2500 ошибок, я наконец смог построить статическую библиотеку.
Крайнее средство: Если все не удается, просто свяжитесь со мной (если вы все еще заинтересованы!).
Других решений пока нет …