当对使用库链接-l
选项(比方说-lfoo
),GCC会喜欢一个共享对象静态库,如果两者都发现了(会喜欢libfoo.so
到libfoo.a
).有没有办法让gcc更喜欢静态库,如果两者都找到了?
我正在尝试解决的问题如下:我正在为应用程序(飞行模拟器称为X-Plane)创建一个插件,具有以下约束:
/usr/lib
或/usr/lib32
:
LD_PRELOAD
或LD_LIBRARY_PATH
查找我的插件附带的共享对象为了解决上述约束,一种可能的解决方案是将生成的共享对象链接到所使用的所有非平凡库的静态32位版本.但是,在安装这些库时,通常会安装静态和动态版本,因此gcc将始终链接到共享对象而不是静态库.
当然,移动/删除/删除有问题的共享对象,只是将静态库放在中/usr/lib32
,这是一种解决方法,但它不是一个好的
注意:
-Wl,-static -lfoo -Wl,-Bdynamic,
但没有带来预期的结果-l:libfoo.a
过,但这也没有带来预期的结果我正在尝试让人们跟踪使用C++中的OpenCV进行跟踪工作,用相机看着街道,人们在移动它.我拍摄的一个示例视频,我正在使用,请看这里:http://akos.maroy.hu/~akos/eszesp/MVI_0778.MOV
我读了这个主题,我尝试了很多东西,包括:
但这些都没有提供好的结果.对于我的示例代码,请参见下文.根据上述视频输出代码,请参阅: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) 我遇到了一个有趣的问题,即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()
,但这似乎是一个丑陋的解决方案.
我不知道我做错了什么
我正在尝试让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)