C++ 如何在基于libgit2的应用程序中进行配置?

C++ 如何在基于libgit2的应用程序中进行配置?,c++,c,visual-c++,config,libgit2,C++,C,Visual C++,Config,Libgit2,它将提示:系统文件“gitconfig”不存在 这是我的代码: #include <windows.h> #include <wchar.h> #include "include/git2.h" #ifdef _DEBUG #pragma comment(lib, "git2d.lib") #else #pragma comment(lib, "git2.lib") #endif int main(int argc, char* argv[]) { git_t

它将提示:系统文件“gitconfig”不存在 这是我的代码:

#include <windows.h>
#include <wchar.h>
#include "include/git2.h"

#ifdef _DEBUG
#pragma comment(lib, "git2d.lib")
#else
#pragma comment(lib, "git2.lib")
#endif

int main(int argc, char* argv[])
{
    git_threads_init();

    git_repository* repo = NULL;
    int iRetVal = git_repository_init(&repo, (LPCTSTR)("C:\\test"), false);

    if( (iRetVal < 0) && (giterr_last() != NULL) )
    {
        MessageBox(NULL, giterr_last()->message, "gittest", MB_ICONERROR | MB_OK);
    }
    if( repo != NULL )
        git_repository_free(repo);

    git_threads_shutdown();
    return 0;
}
iRetVal返回-1,“repo”为空,但它是在C:\test中创建的存储库 我知道有三种配置:系统配置、xdg配置、全局配置、什么样的配置以及在哪里放置配置

第二个问题的代码是:


这不是一个致命错误,所以很可能是libgit2 tyring留下来查找配置的。LPCTSTR表明您试图将宽字符传递给libgit2,但这行不通,因为libgit2需要一个UTF-8字符串。我删除了LPCTSTR,得到了相同的结果。我不能忽略结果,'repo'返回NULL,我不能使用它。强制转换本身并不是问题所在,而是表明您拥有的数据都是宽字符。确保您有单字节字符,删除这个小测试项目中对宽字符的任何引用,以查看问题从何处开始。是的,您是对的。谢谢先生,还有一个问题,为什么我要从github克隆一个存储库,它会返回:接收到意外的内容类型?
#include <windows.h>
#include "include/git2.h"

#pragma comment(lib, "git2.lib")

int main(int argc, char* argv[])
{
    git_threads_init();

    git_repository* repo = NULL;
    git_clone_options opts = GIT_CLONE_OPTIONS_INIT;
    int iRetVal;

    opts.bare = true;
    iRetVal = git_clone(&repo, "https://github.com/libgit2/libgit2.git", "C:\\test", &opts);
    if( (iRetVal < 0) && (giterr_last() != NULL) )
    {
        MessageBox(NULL, giterr_last()->message, "gittest", MB_ICONERROR | MB_OK);
    }
    if( repo != NULL )
        git_repository_free(repo);

    git_threads_shutdown();
    return 0;
}