Резюме: есть ли небольшой пример того, как создать консольное приложение Win32 C++, использующее библиотеку libgit2? (исходники доступны на GitHub)?
Я ознакомился с файлом readme и вики по как собрать библиотеку в Windows с помощью CMake, и все работало гладко (только одна ошибка модульного тестирования).
Теперь я хочу создать простое консольное приложение, использующее библиотеку, используя Microsoft Visual Studio C++ 2010 (the.vcxproj
и the.sln
). Я нашел код general.c
в примерах libgit2 и хочу сделать то же самое в своем приложении на C++. Никакого успеха -- сегодня я чувствую себя очень глупо...
Я заметил, что есть libqgit2 для C++ и Qt. Есть ли что-нибудь подобное для чистого C++? Или есть способ использовать библиотеку C из приложения C++?
Обновление: я переименовал general.c
в general.cpp
, добавил путь включения libgit2 к проекту и путь к файлам .lib, изменил #include <stdio.h>
на #include <cstdio>
и скомпилировал. Появляются следующие ошибки ссылок:
1>------ Build started: Project: libgit2_general, Configuration: Debug Win32 ------
1>general.obj : error LNK2019: unresolved external symbol _git_repository_free referenced in function _main
1>general.obj : error LNK2019: unresolved external symbol _git_config_get_string referenced in function _main
1>general.obj : error LNK2019: unresolved external symbol _git_config_get_int32 referenced in function _main
1>general.obj : error LNK2019: unresolved external symbol _git_config_open_ondisk referenced in function _main
1>general.obj : error LNK2019: unresolved external symbol _git_strarray_free referenced in function _main
... etc.
1>general.obj : error LNK2019: unresolved external symbol _git_repository_open referenced in function _main
1>general.obj : error LNK2019: unresolved external symbol _giterr_last referenced in function "void __cdecl check_error(int,char const *)" (?check_error@@YAXHPBD@Z)
1>D:\Tutorial\libgit2_general\Debug\libgit2_general.exe : fatal error LNK1120: 56 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
__stdcall
, а MSVC по умолчанию создает проекты__cdecl
!) - person Edward Thomson   schedule 05.06.2013