摘要:关于如何构建使用libgit2 library的Win32 C ++控制台应用程序(GitHub处提供的来源),是否有任何微小的示例?
我使用CMake跟踪了how to build the library on Windows上的自述文件和wiki,它运行顺畅(只有一个单元测试错误)。
现在,我想构建一个使用该库的简单控制台应用程序 - 使用Microsoft Visual Studio C ++ 2010(the.vcxproj
和the.sln
)。我在 libgit2 示例中找到了general.c
代码,我想从我的C ++应用程序中做同样的事情。没有成功 - 我今天感觉真的很蠢......
我注意到C ++和Qt有libqgit2。纯C ++有什么类似的东西吗?或者有没有办法使用C ++应用程序中的C库?
更新:我已将general.c
重命名为general.cpp
,添加了项目的libgit2包含路径以及.lib文件的路径,更改了{{1转到#include <stdio.h>
,并编译。出现以下链接错误:
#include <cstdio>
答案 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;附加依赖。