小编Áko*_*róy的帖子

在链接时使gcc更喜欢静态库到共享对象?

当对使用库链接-l选项(比方说-lfoo),GCC会喜欢一个共享对象静态库,如果两者都发现了(会喜欢libfoo.solibfoo.a).有没有办法让gcc更喜欢静态库,如果两者都找到了?

我正在尝试解决的问题如下:我正在为应用程序(飞行模拟器称为X-Plane)创建一个插件,具有以下约束:

  • 即使在64位系统上运行,插件也应采用32位共享对象的形式
  • 行驶环境不提供一种方便的方式来加载共享对象,其并不在"正常"位置,说/usr/lib/usr/lib32:
    • 人们不能指望用户设置LD_PRELOADLD_LIBRARY_PATH查找我的插件附带的共享对象
    • 在动态加载插件共享对象之前,X-Plane运行环境不会将我的插件目录添加到``LD_LIBRARY_PATH,这将允许我将所有必需的共享对象与我的插件共享对象一起发送
  • 我不能指望64位用户安装非平凡的32位共享对象(比如说,不包含在ubuntu上的ia32-libs包中)

为了解决上述约束,一种可能的解决方案是将生成的共享对象链接到所使用的所有非平凡库的静态32位版本.但是,在安装这些库时,通常会安装静态和动态版本,因此gcc将始终链接到共享对象而不是静态库.

当然,移动/删除/删除有问题的共享对象,只是将静态库放在中/usr/lib32,这是一种解决方法,但它不是一个好的

注意:

  • 是的,我确实阅读了如何链接共享对象和库,我并没有尝试创建一个"完全静态链接的共享对象"
  • 是的,我试过-Wl,-static -lfoo -Wl,-Bdynamic,但没有带来预期的结果
  • 是的,我也尝试-l:libfoo.a过,但这也没有带来预期的结果

linux gcc shared-libraries static-linking

22
推荐指数
2
解决办法
8729
查看次数

C++ OpenCV:跟踪在街上移动的人

我正在尝试让人们跟踪使用C++中的OpenCV进行跟踪工作,用相机看着街道,人们在移动它.我拍摄的一个示例视频,我正在使用,请看这里:http://akos.maroy.hu/~akos/eszesp/MVI_0778.MOV

我读了这个主题,我尝试了很多东西,包括:

  • 背景检测和创建轮廓
  • 尝试检测blob(blob的关键点)
  • 使用HOGDescriptor为每个帧使用人物检测器

但这些都没有提供好的结果.对于我的示例代码,请参见下文.根据上述视频输出代码,请参阅:http://akos.maroy.hu/~akos/eszesp/ize.avi.在背景中检测到的轮廓为红色,轮廓的边界矩形为绿色,HOG人检测器结果为蓝色.

我遇到的具体问题是:

背景检测,然后找到轮廓似乎工作正常,虽然有一些误报.但主要的缺点是,很多时候一个人被"切割"成多个轮廓.是否有一种简单的方法可以将这些"加入"在一起,可能是假定的"理想"人物大小或其他方式?

对于HOG人物检测器,在我的情况下,它很少识别图像上的真实人物.那我可能做错了什么?

所有指针,想法欢迎!

因此,到目前为止,我正在使用的代码,这是我在这里和那里找到的各种样本的代理和荣耀:

#include<opencv2/opencv.hpp>
#include<iostream>
#include<vector>

int main(int argc, char *argv[])
{
    if (argc < 3) {
        std::cerr << "Usage: " << argv[0] << " in.file out.file" << std::endl;
        return -1;
    }

    cv::Mat frame;
    cv::Mat back;
    cv::Mat fore;
    std::cerr << "opening " << argv[1] << std::endl;
    cv::VideoCapture cap(argv[1]);
    cv::BackgroundSubtractorMOG2 bg;
    //bg.nmixtures = 3;
    //bg.bShadowDetection = false;

    cv::VideoWriter output;
    //int ex = static_cast<int>(cap.get(CV_CAP_PROP_FOURCC));
    int ex = …
Run Code Online (Sandbox Code Playgroud)

c++ opencv tracking

10
推荐指数
2
解决办法
2万
查看次数

如果按下后退按钮,android singleinstance活动不单

我遇到了一个有趣的问题,即Activity被多次创建,甚至它被定义为清单中的singleTask或singelInstance活动.以下是如何重现这一点.比如,在主要活动中:

@Override
protected void onResume() {
    Intent i = new Intent(MainActivity.class, SingleActivity.class);
    startActivity(i);
}
Run Code Online (Sandbox Code Playgroud)

在我的SingleActivity中,我有:

@Override
protected void onCreate(Bundle savedInstanceState) {
    ...
    Log.i("SingleActivity", "onCreate " + System.identityHashCode(this));
    ...
}
Run Code Online (Sandbox Code Playgroud)

在清单中,我有:

    <activity android:name=".SingleActivity"
              android:launchMode="singleInstance"
    />
Run Code Online (Sandbox Code Playgroud)

现在,如果我启动应用程序,事情似乎没问题,在一种情况下可以预期:如果我SingleActivity在前面按下"后退"按钮,它会导航回到MainActivity,在那里MainActivity.onResume()将创建另一个SingleActivity实例,而不是提出已经存在的实例.这是我所知道的,因为在日志中,会显示不同的身份哈希码.

如果启动模式是singleTask,则同样如此.

唯一的解决方法似乎是覆盖onBackPressed(),但这似乎是一个丑陋的解决方案.

我不知道我做错了什么

android single-instance launchmode android-activity

6
推荐指数
2
解决办法
6730
查看次数

android jacoco覆盖空与gradle

我正在尝试让jacoco为我的android测试项目创建一个代码覆盖率报告.我在build.gradle中有以下内容:

apply plugin: 'com.android.application'
apply plugin: 'jacoco'
...
jacoco {
    toolVersion = "0.7.1.201405082137"
}
...
android {
    buildTypes {
        release {
        }
        debug {
            testCoverageEnabled true
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行gradlew -i createDebugCoverageReport时,我得到一个覆盖率报告,但它是空的.gradle执行结束如下:

:androidTest:connectedAndroidTest (Thread[main,5,main]) completed. Took 2 mins 36.951 secs.
:androidTest:createDebugCoverageReport (Thread[main,5,main]) started.
:androidTest:createDebugCoverageReport
Executing task ':androidTest:createDebugCoverageReport' (up-to-date check took 0.006 secs) due to:
  Output file /home/akos/src/androidTest/build/outputs/reports/coverage/debug has changed.
  Output file /home/akos/src/androidTest/build/outputs/reports/coverage/debug/index.html has been removed.
  Output file /home/akos/src/androidTest/build/outputs/reports/coverage/debug/.resources/package.gif has been removed.
[ant:reportWithJacoco] Loading execution data file /home/akos/src/androidTest/build/outputs/code-coverage/connected/coverage.ec
[ant:reportWithJacoco] Writing bundle …
Run Code Online (Sandbox Code Playgroud)

android code-coverage gradle jacoco

6
推荐指数
2
解决办法
7085
查看次数