小编Con*_*tin的帖子

使用CMake安装其他文件

我试图提供一些带有一些可执行文件的"源"文件.我想知道是否有办法将这些源文件复制到构建目录(从源目录),然后使用CMake复制到安装目录.

我在这里更具体的目标是包含我在自己的*.cl文件中编写的OpenCL内核.

例:

mkdir build
cd build
cmake ..
make
Run Code Online (Sandbox Code Playgroud)

现在我的目录应该有一个可执行文件(标准CMake),并some_opencl_kernel.cl在我的可执行文件中打开.

c cmake opencl

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

libjpeg API和参考

我无法找到详细介绍函数调用和返回值的API ......标题也不是很干净......

我找到了大量的例子,但我对错误处理(返回值)很感兴趣.我是否接近这个错误,因为我正在试图找到像这个知名图书馆的功能列表一样基本的东西.

c libjpeg

13
推荐指数
1
解决办法
9954
查看次数

加载Python共享库时C++中的未定义符号

我一直试图让我的项目运行,但我遇到了麻烦.经过大量调试后,我已经缩小了问题但不知道如何继续.

一些背景,我在C++代码中使用python脚本.这在Python上有所记录,我设法让它在我的基本可执行文件中运行得很好.#include和-lpython2.6,一切都很棒.

但是,从共享库(.so)运行此python脚本时出现了困难.该共享库由模拟系统(OpenRAVE)"加载"为"模块".系统使用名为SendCommand的"模块"的虚拟方法与此模块交互.然后该模块启动boost :: thread,为python提供自己的线程,并返回到模拟系统.但是,当python开始导入其模块并因此加载其动态库时,它会失败,我假设由于以下错误:

 ImportError: /usr/lib/python2.6/dist-packages/numpy/core/multiarray.so: undefined symbol: _Py_ZeroStruct 

我在我的可执行文件和共享库上运行了ldd,没有一些区别.我还在上面的文件上运行了nm -D,_Py_ZeroStruct确实是未定义的.如果你们想要打印命令,我很乐意提供它们.非常感谢任何建议,谢谢.

这是完整的python错误:

Traceback (most recent call last):
  File "/usr/lib/python2.6/dist-packages/numpy/__init__.py", line 130, in 
    import add_newdocs
  File "/usr/lib/python2.6/dist-packages/numpy/add_newdocs.py", line 9, in 
    from lib import add_newdoc
  File "/usr/lib/python2.6/dist-packages/numpy/lib/__init__.py", line 4, in 
    from type_check import *
  File "/usr/lib/python2.6/dist-packages/numpy/lib/type_check.py", line 8, in 
    import numpy.core.numeric as _nx
  File "/usr/lib/python2.6/dist-packages/numpy/core/__init__.py", line 5, in 
    import multiarray
ImportError: /usr/lib/python2.6/dist-packages/numpy/core/multiarray.so: undefined symbol: _Py_ZeroStruct
Traceback (most recent call last):
  File "/home/constantin/workspace/OpenRAVE/src/grasp_behavior_2.py", line 3, in 
    from openravepy import *
  File "/home/constantin/workspace/rospackages/openrave/lib/python2.6/site-packages/openravepy/__init__.py", …

python shared-libraries undefined-symbol openrave

12
推荐指数
2
解决办法
8605
查看次数

使用Autoconf对ARM进行交叉编译

我无法使用autconf为我的arm板交叉编译库.

我正在使用这一行:

./configure --target=arm-linux --host=arm-linux --prefix=/bla/bla/bla/linux_arm_tool CFLAGS='-m32'
make
make install
Run Code Online (Sandbox Code Playgroud)

当我做file检查时,我得到:

libjpeg.so.8.4.0: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped
Run Code Online (Sandbox Code Playgroud)

这看起来根本不对,但无论如何我都尝试使用它......我得到:

/usr/lib/gcc/arm-linux-gnueabi/4.5.3/../../../../arm-linux-gnueabi/bin/ld: skipping incompatible /bla/bla/bla/bla/../linux_arm_tool/lib/libjpeg.so when searching for -ljpeg
Run Code Online (Sandbox Code Playgroud)

我很茫然,我一直在谷歌上搜索一小时......

c autoconf cross-compiling

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

找不到可绘制的资源

我试图为自定义实现选择器可绘制资源ArrayAdapter.我一直在得到一个android.content.res.Resources$NotFoundException: File res/drawable/list_selector.xml from drawable resource ID #0x7f020

有人可以提供建议吗?

我有两个xml文件:

RES /抽拉/ list_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_checked="true" android:color="@android:color/white" />
    <item android:state_checked="false" android:color="@android:color/black" />
</selector>
Run Code Online (Sandbox Code Playgroud)

RES /布局/ list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <TextView 
        android:id="@+id/casualty_text_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/list_selector"/>

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

最后,我的代码加载列表项,如下所示:

    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        TCCC cur_object = getItem(position);

        View cur_view = convertView;
        if(cur_view == null)
        {
            System.out.println("Inflating!");
            cur_view = View.inflate(getContext(), …
Run Code Online (Sandbox Code Playgroud)

android drawable

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

检查工具链文件中的CMake缓存变量

我在通过命令行设置配置变量时遇到问题.我无法从系统中确定它,所以我希望用户指定:

cmake -DCMAKE_TOOLCHAIN_FILE=../android.toolchain -DANDROID_ABI:STRING="arm64" ..
Run Code Online (Sandbox Code Playgroud)

在我的内心android.toolchain,我有以下内容:

message(STATUS "Android ABI: ${ANDROID_ABI}")
if( "${ANDROID_ABI}" STREQUAL "" )
   message(FATAL_ERROR "Please specifiy ABI at cmake call -DANDROID_ABI:STRING=armeabi or -DANDROID_ABI:STRING=arm64")
endif()
Run Code Online (Sandbox Code Playgroud)

无论如何,它都会在这条线上失败,即使它打印出正确的arm64:

 -- Android ABI: arm64
CMake Error at yaml-cpp/android.toolchain:45 (message):
Please specifiy ABI at cmake call -DANDROID_ABI:STRING=armeabi or -DANDROID_ABI:STRING=arm64
Run Code Online (Sandbox Code Playgroud)

任何人都可以指导我做错的事吗?


我认为这与以下内容有关:

  • -D添加缓存变量而不是普通变量
  • 这是在工具链文件中...它似乎忽略缓存变量

有什么想法或建议吗?

cmake

8
推荐指数
1
解决办法
1325
查看次数

QSpormLIout中的QSpacerItem - 垂直展开

我想强迫我的空间扩大QFormLayout,但无论什么QFormLayout只使用QSpaceItem::sizeHint().有没有人知道解决这个问题的方法,或者处理这个问题的正确方法?


MyWidget::MyWidget(QWidget *parent) : QWidget(parent)
{
   SetupLayout();
}

void MyWidget::SetupLayout()
{
   QFormLayout * layout = new QFormLayout();

   layout->addRow("Something1", new QComboBox());
   layout->addRow("Something2", new QSpinBox());

   //Spacer
   layout->addItem(new QSpacerItem(0,10, QSizePolicy::Expanding, QSizePolicy::Expanding));

   layout->addRow(QPushButton("Something3"));

   setLayout(layout);
}
Run Code Online (Sandbox Code Playgroud)

c++ qt

6
推荐指数
1
解决办法
1万
查看次数

来自Mat的OpenCV访问元素

我正在尝试学习OpenCV,并且是一个硬头,我试图运行以下算法:

 cv::Mat cur_features;
 cv::goodFeaturesToTrack(current_image, cur_features, 400, 0.01, 0.01);
Run Code Online (Sandbox Code Playgroud)

现在,作为头脑冷静的人,我有兴趣看看cur_features正在举办什么......我期待400x2 cv :: Mat但我得到的是400x1 cv :: Mat

没什么大不了的,我想也许它是一个直接索引.但是,对于我的生活,我无法从cur_features.at(0)中提取值并将其打印出来.

我究竟做错了什么?我见过goodFeaturesToTrack_Demo.cpp.关于该演示的一些注意事项与我的不同.给出了以下示例,我尝试了以下调用:

 std::cout << cur_features.size() << std::endl; // This throws a compile time error even though its in the example
 std::cout << cur_features.at<Point2f>(0).x << std::endl; //This throws a run time error.
Run Code Online (Sandbox Code Playgroud)

任何人都可以指导我一些解释如何实现目标的文档吗?goodFeaturesToTrack告诉你它返回一个OutputArray,它是一个角的向量,但它没有描述这些角的类型.如果我用其他方法得到它,我会在文档中寻找这个答案吗?


编辑: 另外,最重要的是Mat :: type().我找不到可以解释返回值的位置...我正在寻找文档中的枚举,但无法找到它.

 std::cout << current_image.type() << std::endl; //This returns 0
 std::cout << cur_features.type() << std::endl; //This returns 13
Run Code Online (Sandbox Code Playgroud)

c++ opencv

5
推荐指数
1
解决办法
4827
查看次数

从QGridLayout删除一行

总之,我保持QGridLayoutQLabels,其表现出多项式的系数.我代表我的多项式使用QList<double>.

每次更新系数时,我都会更新标签.当改变列表的大小,我的方法没有效果很好. QGridLayout::rowCount()没有正确更新.我想知道是否有办法从QGridLayout中删除行.


代码如下,QGridLayout用更多(或更少)更新大小QLabels

int count = coefficients->count(); //coefficients is a QList<double> *
if(count != (m_informational->rowCount() - 1)) //m_information is a QGridLayout
{
    SetFitMethod(0);
    for(int i = 0; i < count; ++i)
    {
        QLabel * new_coeff = new QLabel(this);
        new_coeff->setAlignment(Qt::AlignRight);
        m_informational->addWidget(new_coeff, i+1, 0);
        QLabel * param = new QLabel(this);
        param->setAlignment(Qt::AlignLeft);
        param->setText(QString("<b><i>x</i><sup>%2</sup></b>").arg(count-i-1));
        m_informational->addWidget(param, i+1, 1);
        QSpacerItem * space = new QSpacerItem(0,0,QSizePolicy::Expanding);
        m_informational->addItem(space, i+1, 1);
    }

    m_informational->setColumnStretch(0, 3);
    m_informational->setColumnStretch(1, 1); …
Run Code Online (Sandbox Code Playgroud)

c++ qt

5
推荐指数
1
解决办法
3903
查看次数

嵌入式 Python 段错误

我的多线程应用程序在调用PyImport_ImportModule("my_module").

BT 将发布在底部。

一些背景:

  1. 我的应用程序创建许多派生 C++ 类的多个实例,并运行基类的Run()函数,该函数使用虚拟方法来确定要执行的操作。
  2. 一个派生类使用 Python 类, (模块Grasp_Behavior)中的(类)grasp_behavior
  3. 经过大量阅读我已经使用Python API来实现(2)(下面摘录)
  4. 我生成了该类的 2 个实例,并“并行”运行它们(python interpr 并不是真正并行运行)
  5. 我尝试生成该类的另一个实例,段错误位于PyImport_ImportModule

我的想法是,也许我不能在同一个解释器中两次导入模块。但我不知道如何检查它。我想我需要看看是否grasp_behavior在字典中,但我不知道是哪一个,也许我得到了__main__模块的字典?

但我可能是错的,任何建议都会非常有帮助!

在构造函数中:

//Check if Python is Initialized, otherwise initialize it
if(!Py_IsInitialized())
{
    std::cout << "[GraspBehavior] InitPython: Initializing the Python Interpreter" << std::endl;
    Py_Initialize();
    PyEval_InitThreads(); //Initialize Python thread ability
    PyEval_ReleaseLock(); //Release the implicit lock on the Python GIL
}

// --- Handle Imports ----

PyObject * pModule = PyImport_ImportModule("grasp_behavior"); …
Run Code Online (Sandbox Code Playgroud)

c++ python multithreading embedding segmentation-fault

4
推荐指数
1
解决办法
3078
查看次数