作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 libgit2 d. 图书馆我总是在程序退出时遇到段错误。当我打开和关闭存储库时,在退出之前不会发生错误。这似乎是垃圾收集器的问题,但手动禁用垃圾收集器(GC.disable();)似乎根本不会影响结果。释放(git_repository_free(repo))似乎也没有效果。
这是一些示例代码:
import std.stdio : writeln;
import std.string : toStringz;
import core.memory : GC;
import deimos.git2.types : git_repository;
import deimos.git2.repository : git_repository_open, git_repository_free;
void main() {
GC.disable();
git_repository *repo;
git_repository_open(&repo, ".".toStringz());
git_repository_free(repo);
writeln("END");
}
输出:
$ ./gittest
END
zsh: segmentation fault (core dumped) ./gittest
版本:
如果有的话,我做错了什么?如果没有什么可以确定错误的罪魁祸首(d、libgit2 或 libgit2 d 绑定(bind))?
附加说明:我尝试使用 dlibgit 并发现它有令人难以置信的错误,主要是看起来已经过时了。这个问题涉及到libgit2 d绑定(bind)。
最佳答案
从我的评论中升级:
libgit2 0.22.1 需要调用git_libgit2_init在调用任何其他 libgit2 函数之前。由于 D 绑定(bind)适用于 0.20.1,因此它们不提供对此函数的绑定(bind)。
您可以通过以下方式破解与 init/shutdown 函数的绑定(bind):
extern (C):
int git_libgit2_init();
int git_libgit2_shutdown();
关于d - 如何在d中使用libgit的git_repository_open,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30564662/
我是一名优秀的程序员,十分优秀!