如何在Windows上使用本机C ++应用程序中的libgit2? (Microsoft VC ++)

时间:2013-06-05 13:05:12

标签: visual-c++ libgit2

摘要:关于如何构建使用libgit2 library的Win32 C ++控制台应用程序(GitHub处提供的来源),是否有任何微小的示例?

我使用CMake跟踪了how to build the library on Windows上的自述文件和wiki,它运行顺畅(只有一个单元测试错误)。

现在,我想构建一个使用该库的简单控制台应用程序 - 使用Microsoft Visual Studio C ++ 2010(the.vcxprojthe.sln)。我在 libgit2 示例中找到了general.c代码,我想从我的C ++应用程序中做同样的事情。没有成功 - 我今天感觉真的很蠢......

我注意到C ++和Qt有libqgit2。纯C ++有什么类似的东西吗?或者有没有办法使用C ++应用程序中的C库?

更新:我已将general.c重命名为general.cpp,添加了项目的libgit2包含路径以及.lib文件的路径,更改了{{1转到#include <stdio.h>,并编译。出现以下链接错误:

#include <cstdio>

2 个答案:

答案 0 :(得分:3)

这强烈暗示我calling convention mismatch。出于多种原因,libgit2默认使用__stdcall,而Visual Studio默认创建使用__cdecl调用约定的项目。虽然您的程序可以使用调用约定并使用不同的方法成功调用libgit2,但最简单的解决方案可能只是对两者使用相同的调用约定。

配置libgit2时,可以关闭STDCALL标志,这将导致它发出一个使用__cdecl调用约定构建的库:

cmake %PATH_TO_LIBGIT2_SOURCE% -DTHREADSAFE=ON -DSTDCALL=OFF
cmake --build .

答案 1 :(得分:1)

如果您从CMake生成项目,这有点令人惊讶,可能是您没有链接到libgit2.lib。确保项目属性中有git2.dll - &gt;配置属性 - &gt;链接器 - &gt;输入 - &gt;附加依赖。

link to git2.lib