小编Dav*_*dge的帖子

轻松检查共享库中未解析的符号?

我正在编写一个相当大的C++共享对象库,并遇到了一个小问题,使调试变得很麻烦:

如果我在头文件中定义一个函数/方法,并忘记为它创建一个存根(在开发期间),因为我构建为共享对象库而不是可执行文件,编译时没有出现错误告诉我我有忘记实现这个功能.我发现错误的唯一方法是在运行时,最终链接到此库的应用程序会出现"未定义的符号"错误.

我正在寻找一种简单的方法来检查我是否在编译时拥有所需的所有符号,也许我可以添加到我的Makefile中.

我提出的一个解决方案是运行已编译的库nm -C -U以获取所有未定义引用的demangled列表.问题是,这也与在其他库,如glibc的,这当然会反对与此相伴库时,最终的应用程序放在一起链接的所有引用的列表中出现.有可能使用输出nmgrep通过我的所有头文件,看看是否有任何相应的名称...但这似乎是疯了.当然,这不是一个罕见的问题,有一个更好的解决方法吗?

c++ linker shared-libraries

75
推荐指数
3
解决办法
5万
查看次数

将git repo的分支推送到新的远程(github),隐藏其历史记录

我的组织正准备使用github发布我们软件的开源版本,但是我不确定解决这个问题的最佳方法:

我们有两个分支masterrelease,master包含一些我们决定不发布的专有组件,release包含我们想要分发的清理版本.问题是,如果我们只是将发布分支推送到github,可以通过查看修订历史来检索专有组件.

我正在考虑创建一个单独的存储库,将HEAD of relase复制到其中,执行a git init,并将该存储库推送到github.但是,我们希望保留能够在将来从主服务器中挑选某些补丁到发布的能力,并将这些更改推送到github.

有没有办法在不维护两个separte存储库的情况下执行此操作?

谢谢!

更新:

更具体一点,这就是我们的提交历史目前的样子:

--- o - o - o - o - f - o - o - f - master
             \
              c - c - c - c - c - c - c - REL - f - f
Run Code Online (Sandbox Code Playgroud)

'o'是master,专有分支中的提交,'c'是提交,删除不应发布的内容(通常不会删除整个文件,但重新处理现有文件不依赖于专有组件),'f'是修复了适用于发布的大师,因此被挑选出来.REL是我们认为可以安全发布的代码的标记版本,没有任何历史记录(甚至是发布分支的早期版本,因为并非所有专有材料都在REL标记之前被删除).

git github remote-branch git-branch

19
推荐指数
2
解决办法
3904
查看次数

用数字输出处理C++单元测试的框架/工具

我正在开发一个C++应用程序,它使用计算机视觉技术来识别一系列图像中的各种类型的对象.(1000+)图像已经手工分类,因此我们为每个图像都有一个XML文件,其中包含对象实际位于图像中的位置的描述.

我想知道是否有一个测试框架可以理解/绘制数字测试的结果,在这种情况下是对程序图像分类中的错误的一些衡量,而不仅仅是通过/失败样式单元测试.

我们希望使用类似CDash/CTest的东西来运行这些自动化测试,并随着时间的推移查看视觉算法的改进如何使图像更准确地分类.

有谁知道可以做到这一点的工具/框架?

c++ testing unit-testing computer-vision

11
推荐指数
1
解决办法
709
查看次数

对多个域的支持不如宣传的那样有效

10月,Facebook 宣布支持单个应用程序的多个域名.对于其应用程序具有多个域别名的开发人员来说,这是一个好消息 - 无论用户从哪个域查看该页面,都不再需要iframe来解决JavaScript SDK的问题!

不幸的是,它似乎没有像宣传的那样有效.

在博客文章中,他们说:

您的应用程序的URL(网站和/或移动Web URL)必须从"应用程序域"字段中列出的某个域派生.

这是合理的,但开发人员应用程序中的表单似乎是强制执行相反的策略.我有一对域名(例如,abc.com和xyz.com),站点URL设置为(http://abc.com),当我保存时,我收到错误消息:

xyz.com必须来自您的站点URL或您的移动Web URL.

有谁知道这个问题的解决方法?或者这是他们的意图,博客文章的内容是错误的?如果是这样,它似乎很愚蠢,因为很难从单个站点URL派生出多个域.

我对博客文章发表了评论,希望Facebook工程师能够看到它...但同时......

dns facebook multiple-domains

9
推荐指数
2
解决办法
2947
查看次数

如何编写cpp __DIR__宏,类似于__FILE__

__FILE____LINE__宏内置到Ç预处理器,并经常用于打印调试输出与文件名和行号.我需要类似的东西,但只需要路径末尾的目录名称.例如,如果我的代码在:/ home/davidc/some/path/to/some/code/foo/bar我需要一个宏,它只会给我"bar",如果代码在/ home/davidc/some中/ path/to/some/code/foo/bee然后我需要它给我"蜜蜂".

有什么想法吗?(顺便说一下,这是一个C++应用程序).

更新:要清楚,我正在使用一个宏,它将在编译时给我一个包含目录名的字符串,我不想在运行时进行任何字符串处理.

c++ directory c-preprocessor

7
推荐指数
1
解决办法
4051
查看次数