|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
11.01.2019, 18:34 | #1 |
Форумчанин
Регистрация: 26.08.2010
Сообщений: 121
|
Как статически подключить скачанную библиотеку XLNT в Cmake+VS2017
Здравствуйте,
Подскажите пожалуйста! по вопросу подключения статически сторонней библиотеки: 1)Скачал библиотеку xlnt для работы с екселем -https://github.com/tfussell/xlnt. 2)Скачал Cmake, установил, запустил под Windows: -в запущенном Cmake строке "Where is the source" указываю путь к скаченной библиотеки XLNT с файлом CMakeLists.txt: C:/11/xlnt-master/xlnt-master/source -потом указываю путь для "Where build the binaries" и нажимаю Generate. 3)Cmake создает проект для VS2017. 4)Загружаю этот проект в VS2017, и нажимаю "собрать" этот проект. VS2017 создает много файлов, среди который есть .lib файл, по идее файл статической библиотеки,но, оказывается - это только библиотека импорта для динамической библиотеки dll. 5)Создаю новый пустой проект в VS2017, там в свойствах проекта указал путь к .lib файлу и dll файлу, указываю #include xlnt.h, нажимаю компилироваться, но VS2017 выдает ошибку - "xlntd.dll поврежден..". Два ВОПРОСА: 1)Что я сделал не так подключая динамическую dll библиотеку ? 2)Но самый главный вопрос, как подключить библиотеку Статически ? Подскажите пожалуйста! С Cmake ни разу не работал. |
11.01.2019, 19:55 | #2 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
собрал для 2017 студии.
1. скачал проект с гитхаба. 2. скачал/установил cmake 3. подложил в корень проекта батник вот с таким содержимым: build32.bat Код:
собралась статическая либка (dll не нужна) если я правильно понял - со статическим рантаймом. что бы собрать динамическую либку, нужно вместо: Код:
Код:
что бы собирать 64 битную версию (x64) нужно вместо строчки: Код:
Код:
что бы использовать другие версии студии: Код:
Код:
что бы собрать статическую версию библиотеки, с динамической версией рантайма - необходимо править скрипты сборки. (это гемморойно, но решаемо) в чем здесь особенность? подключи lib к проекту. пропиши пути к lib и к include а dll положи рядышком с твоим exe и у тебя всё будет оккай. если же собрать библиотеку полностью как статическую, тогда у тебя и рантайм тоже будет статический. и твой итоговый exe будит жирный, как свинья. а это уже не очень круто. если тебе очень важно поиметь статическую линковку с динамическим рантаймом (как это бывает у всех воспитанных людей), тогда: открой в любом текстовом редакторе файлик: xlnt\cmake\ucm.cmake найди там строчку: Код:
Код:
теоретически, это отключит "линковку статически с рантаймом" но на практике я не проверял. вот ты как проверишь - дай знать))) |
11.01.2019, 20:36 | #3 |
Форумчанин
Регистрация: 26.08.2010
Сообщений: 121
|
|
11.01.2019, 20:48 | #4 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
батник нужно запускать из командной строки. удобно запускать из под Far32 или из total commander или можно просто зайти в пуск. запустить cmd в черно-белом окошке сделать: Код:
Код:
а не из проводника. Можно конечно и из проводника тоже запускать. Но если что-то пошло не так. Например - он не нашел симейк, тогда окошко быстро закроется. и ты не успеешь увидеть в чем был косяк. обрати внимание на строчку: Код:
и не прописал пути к нему в переменной окружения PATH, тогда он может не собрать просто потому, что не нашел cmake в этом случае нужно в этой строчечке указать путь к твоему симейку. Последний раз редактировалось _Bers; 11.01.2019 в 20:52. |
|
11.01.2019, 20:51 | #5 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Для сборки вообще обычно ж надо запускать из x86 Native Tools Command Prompt for VS 2017 и т.п. (искать в Пуск написав любую часть названия).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
11.01.2019, 20:58 | #6 | ||
Форумчанин
Регистрация: 26.08.2010
Сообщений: 121
|
Просто в текстовик скопировал Ваш код и txt переименовал в bat. Так нельзя ?
Цитата:
Цитата:
Последний раз редактировалось Android1; 11.01.2019 в 21:01. |
||
11.01.2019, 21:02 | #7 | |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Цитата:
Так вы не увидите вывод, консоль пропадет.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
|
11.01.2019, 21:07 | #8 | |
Форумчанин
Регистрация: 26.08.2010
Сообщений: 121
|
1)Создалось три .lib файла в папках:
-build32\intalled\lib\xlnt.lib -build32\source\Release\xlnt.lib -build32\source\thurd-party\libstudxml.lib Нужный вот этот - build32\source\Release\xlnt.lib ? А остальные два зачем ? 2) Цитата:
3)После того, как Cmake создал все эти файлы, нужно ли открывать файлы созданные Cmake`ом в VS: -build32\source\xlnt.sln -build32\xlnt_all.sln Какой из них или сразу два ? Последний раз редактировалось Android1; 11.01.2019 в 21:25. |
|
11.01.2019, 23:03 | #9 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
|
11.01.2019, 23:04 | #10 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,357
|
Скорее всего здесь файл был изначально собран.
Похоже, сюда он был скопирован. Наверно сторонняя библиотека, нужная самой библиотеке XLNT |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как к WebStorm скачанную тему подключить? (на win 7). | DanDiablo | Софт | 0 | 24.09.2016 17:56 |
Как подключить библиотеку в с++? | hjacob | Общие вопросы C/C++ | 12 | 01.08.2012 16:10 |
Как подключить библиотеку??? | Benera | Общие вопросы Delphi | 6 | 27.04.2012 13:12 |
Как подключить библиотеку. | Dasharnb777 | Общие вопросы .NET | 4 | 30.09.2010 12:14 |