#c #c #gtkmm #.a #.lib
#c #c #gtkmm #.a #.библиотека
Вопрос:
Итак, я новичок в платформе, я использую c / c , и у меня есть интересы в графических интерфейсах, поэтому я решил использовать gtk и gtkmm с Visual studio. Сначала я загрузил gtk для проекта gnome. Я выполнил все шаги, и я получил это после ручного запуска :
\ test23.cpp
#include <gtkmm.h>
int main(int argc, char* argv[])
{
Gtk::Main app(argc, argv);
Gtk::Window fenetre;
Gtk::Main::run(fenetre);
return 0;
}
$ g -std=c test23.cpp $(pkg-config gtkmm-3.0 --cflags --libs | sed 's/ -I/ -isystem /g')
Package gtkmm-3.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtkmm-3.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtkmm-3.0' found
bash: g : command not found
поэтому я решил установить с помощью vcpkg.
Но мне не удалось установить gtk и gtkmm после нескольких попыток.
Вот что у меня есть :
C:WINDOWSsystem32>vcpkg install gtk
Computing installation plan...
The following packages will be built and installed:
gtk[core]:x86-windows
* harfbuzz[core,glib]:x86-windows
* libepoxy[core]:x86-windows
* pango[core]:x86-windows
Additional packages (*) will be modified to complete this operation.
Detecting compiler hash for triplet x86-windows...
Starting package 1/4: libepoxy:x86-windows
Building package libepoxy[core]:x86-windows...
Could not locate cached archive: C:UsersManolo97233AppDataLocalvcpkgarchivesf7f743ec00b235ca7fd37812284b7d2e09d89b368a.zip
-- Using cached C:/Windows/SysWOW64/vcpkg/downloads/anholt-libepoxy-1.5.4.tar.gz
-- Cleaning sources at C:/Windows/SysWOW64/vcpkg/buildtrees/libepoxy/src/1.5.4-337c486045.clean. Use --editable to skip cleaning for the packages you specify.
-- Extracting source C:/Windows/SysWOW64/vcpkg/downloads/anholt-libepoxy-1.5.4.tar.gz
-- Applying patch libepoxy-1.5.4_Add_call_convention_to_mock_function.patch
-- Using source at C:/Windows/SysWOW64/vcpkg/buildtrees/libepoxy/src/1.5.4-337c486045.clean
-- Acquiring MSYS Packages...
CMake Error at scripts/cmake/vcpkg_execute_required_process.cmake:72 (message):
Command failed: C:/Windows/SysWOW64/vcpkg/downloads/tools/msys2/msys64/usr/bin/bash.exe --noprofile --norc -c "pacman -S --noconfirm --needed pkg-config"
Working Directory: C:/Windows/SysWOW64/vcpkg/downloads/tools/msys2
Error code: 1
See logs for more information:
C:WindowsSysWOW64vcpkgbuildtreeslibepoxymsys-pacman-x86-windows-err.log
Call Stack (most recent call first):
scripts/cmake/vcpkg_acquire_msys.cmake:127 (vcpkg_execute_required_process)
scripts/cmake/vcpkg_configure_meson.cmake:106 (vcpkg_acquire_msys)
ports/libepoxy/portfile.cmake:16 (vcpkg_configure_meson)
scripts/ports.cmake:79 (include)
Я полагал, что у меня проблема с msys2, поэтому я безуспешно попытался установить его отдельно после установки комплекта.
затем я попытался запустить отдельно другие пакеты, связанные с gtkmm, такие как pango, и я получил это :
//vcpkg install pango
Computing installation plan...
error writing file: C:WindowsSysWOW64vcpkgbuildtrees0.vcpkg_dep_info.cmake: The data is invalid.
Кто-то объяснил по теме, что это может быть проблемой доступности vcpkg для других пакетов. я изменил доступность vcpkg для других пакетов в параметрах моего файла systWOW64, но это не удалось.
Я не знаю, является ли vcpkg проблемой, потому что я не удалял его и не устанавливал заново.
Я ищу решения / варианты, у меня мало идей, мне буквально нужна помощь. Спасибо
Комментарии:
1. Можете ли вы точно рассказать нам, что вы делаете, когда пытаетесь установить msys или другие пакеты? Есть сто способов сделать это, поэтому трудно сказать, что вы делаете. Предположим, мы только что вошли в Windows, какие точные шаги вы выполняете дальше? Будьте очень точны, пожалуйста.
Ответ №1:
Используйте JHbuild, своего друга при создании приложений GNOME из исходного кода!
При запуске jhbuild build gtkmm --nodeps
встроенные файлы будут установлены в $HOME/jhbuild/build . Чтобы скомпилировать ваше приложение с его помощью, вы должны экспортировать переменную среды PKG_CONFIG_PATH следующим образом:
export PKG_CONFIG_PATH="$HOME/jhbuild/build/lib/pkgconfig"
(в терминале, из которого вы запускаете команду g ) И вам нужно установить g . Я не знаю, как вы используете bash вместе с Visual studio, но если у вас есть apt, вы можете установить g и gtkmm с помощью следующей команды :
apt install libgtkmm-3.0-dev libgstreamermm-1.0-dev g
Если вы уже загрузили gtk, то загруженный пакет должен содержать файл .pc. Каталог, в котором находился этот файл при установке загруженного пакета, необходимо добавить в PKG_CONFIG_PATH .
Ответ №2:
Спасибо Фредерику за ваш ответ, это действительно помогло мне.
У меня есть другой вопрос. В моем стремлении добавить внешние пакеты в мой проект на C / C я прочитал разные темы о том, как преобразовать статическую библиотеку (.a) в статическую библиотеку (.lib). Я загрузил пакеты и хотел добавить их вручную, используя их путь.
Я добавил свои пакеты следующим образом:
1 / Добавьте путь к заголовкам в каталогах компилятора для проекта:
-> меню Проект / Свойства
-> В левом дереве выберите Свойства конфигурации — C / C — Общие
-> В правой таблице первая строка «Другие включаемые каталоги»: добавьте каталог (ы) вашей библиотеки, содержащие заголовки
2 / Добавьте путь к .библиотека в каталогах компилятора для проекта:
-> меню Проект / Свойства
-> В левом дереве выберите Свойства конфигурации — Редактор ссылок — Общие
-> В правой таблице строка «Каталог дополнительных библиотек»: добавьте каталог (ы) вашей библиотеки, содержащий .libs
3 / Укажите библиотеки, с которыми связан ваш проект:
-> меню Проект / Свойства
-> В левом дереве выберите Свойства конфигурации — Редактор ссылок — Введите
-> В правой таблице первая строка «Дополнительные зависимости»: добавьте .библиотеки библиотек, с которыми должен быть связан ваш проект
Но вместо этого я искал файлы .lib для добавления к моему вводу компоновщика, я нашел файлы .a и файлы .dll, и я не знал, что делать. файлы . a и .lib-файлы практически идентичны. Похоже, что файлы .a пока используются в Linux.библиотеки lib используются под Windows. Я безуспешно пытался добавить файлы .a. Я задавался вопросом, могу ли я преобразовать файл .a в .файл библиотеки. Спасибо
Комментарии:
1. Я не знаю, как конвертировать файлы .a в . lib-файлы, но вы можете использовать . вместо этого файлы dll. DLL-файлы уже имеют правильный формат для Windows