首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >libgit2中的不完全类型

libgit2中的不完全类型
EN

Stack Overflow用户
提问于 2022-10-21 09:40:25
回答 1查看 43关注 0票数 1

我正在尝试将libgit2 (1.5.0)集成到我的项目中。由于缺少类型定义,编译失败。

我的项目的CMakeLists.txt包括include目录和libgit2.a文件:

代码语言:javascript
复制
target_include_directories(myprj PUBLIC ../libgit2/src/libgit2-1.5.0/include)

set(myprj "${CMAKE_SOURCE_DIR}/lib/libgit2.a")
link_directories(myprj ${PROJECT_SOURCE_DIR}/lib)
target_link_libraries(myprj PUBLIC ${libgit} crypto ssl)

下面的代码是我正在使用的代码的简化版本,但是它应该演示这个问题:

代码语言:javascript
复制
#include <git2.h>


git_reference *ref;
git_branch_t btype;

int code = git_branch_next(&ref, &btype, iterator);
if(code != 0)
    return code;

char* name = ref->name;

编译器出现错误时失败:

代码语言:javascript
复制
error: invalid use of incomplete typedef ‘git_reference’
char* name = ref->name
                ^~

include目录定义类型,但stuct本身仅在src目录中定义。

libgit2-1.5.0/include/git2/types.h (来源)

代码语言:javascript
复制
typedef struct git_reference git_reference;

libgit2-1.5.0/src/libgit2/refs.h(来源)

代码语言:javascript
复制
struct git_reference {
//...
};

我试图通过将src dir导入到我的项目中来修复它,但是由于缺少包含,这是行不通的。

在Cmake进口:

代码语言:javascript
复制
target_include_directories(myprj PUBLIC ../libgit2/src/libgit2-1.5.0/src/libgit2)

错误:

代码语言:javascript
复制
libgit2/src/libgit2-1.5.0/src/libgit2/common.h:10:10: fatal error: git2_util.h: File or directory not found
   10 | #include "git2_util.h"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-21 09:44:50

我认为这是故意的,使git_reference成为一个不透明的类型。然后,库作者可以随意更改它,而不会破坏兼容性。

要获取引用的名称,请使用git_reference_name而不是直接访问该字段:

代码语言:javascript
复制
const char* name = git_reference_name(ref);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74151731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档