小编Dan*_*den的帖子

在c ++ lldb中使用重载运算符计算表达式

我正在使用lldb在Xcode 5中调试C++程序,我想在调试器中评估任意表达式,特别是那些使用重载运算符的表达式.

例如,我创建了一个非常简单的Xcode 5 C++项目,其中包含以下main.cpp和所有编译器/链接器/ etc选项设置为默认值:

#include <iostream>
#include <vector>

int main(int argc, const char * argv[])
{
  std::vector<int> vec;
  vec.push_back(42);
  std::cout << "vec[0] = " << vec[0] << std::endl;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我在线上设置断点return 0;并运行程序.

然后,在lldb提示符下,整个打印矢量工作正常:

(lldb) expr vec
(std::__1::vector<int, std::__1::allocator<int> >) $0 = size=1 {
  [0] = 42
}
Run Code Online (Sandbox Code Playgroud)

但是,我无法使用重载访问其成员operator[]:

(lldb) expr vec[0]
error: call to a function 'std::__1::vector<int, std::__1::allocator<int> >::operator[](unsigned long)' ('_ZNSt3__16vectorIiNS_9allocatorIiEEEixEm') that is not present in the target
error: The expression could not …
Run Code Online (Sandbox Code Playgroud)

c++ xcode lldb

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

在lldb中使用C++ std :: cout

我试图std::cout在Xcode 5 C++项目中调用lldb.我的项目有一个#include <iostream>线(和我核实,编译std::cout命令正常工作),但它并不能有一个using namespace std;线.

当我停在lldb的断点时,我无法打电话std::cout:

(lldb) expr std::cout << "test"
error: no member named 'cout' in namespace 'std'
error: 1 errors parsing expression

(lldb) expr cout << "test"
error: use of undeclared identifier 'cout'
error: 1 errors parsing expression
Run Code Online (Sandbox Code Playgroud)

对于那些感兴趣的人,我试图std::cout用来打印OpenCV Mat对象.但这个细节可能并不重要.

我的lldb版本是lldb-300.2.53.

根据要求,这是(普通)代码:

#include <iostream>
int main(int argc, const char * argv[])
{
  std::cout << "Hello World" << std::endl;
  return 0; …
Run Code Online (Sandbox Code Playgroud)

c++ lldb xcode5

12
推荐指数
1
解决办法
3145
查看次数

使用Homebrew和pyenv在Mac上安装OpenCV 3 for Python 3

我正在运行Mac OS X 10.11(El Capitan).我想要:

  • 保持我的系统版本的Python作为默认值
  • 与它一起安装Python 3.5
  • 安装OpenCV 3和Python绑定

pyenv按照以下SO答案我安装了Python 3.5:https://stackoverflow.com/a/18671336/1410871

我激活了我的Python 3安装并安装了支持Python 3的OpenCV 3,如下所示:

pyenv shell 3.5.0
brew install opencv3 --with-python3
Run Code Online (Sandbox Code Playgroud)

但是当我启动一个IPython shell并导入时cv2,我收到一个错误:

ImportError                               Traceback (most recent call last)
<ipython-input-1-72fbbcfe2587> in <module>()
----> 1 import cv2

ImportError: No module named 'cv2'
Run Code Online (Sandbox Code Playgroud)

为什么?

python macos opencv python-3.x

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

使用Xcode 5和Matlab R2013b在OS X 10.9中编译mexopencv

我有兴趣在我的系统上使用Kota Yamaguchi的mexopencv库,其规格如下:

  • OS X 10.9(小牛队)
  • Xcode 5
  • Matlab 2013b
  • OpenCV通过macport安装到/ opt/local/include/{opencv,opencv2}和/ opt/local/lib

我使用mexopencv网站上的命令git克隆了最新的OpenCV版本; 这是版本084838d62a25fcb3eec9f610abf91b167bc6c2f5从星期六七月20日05:18:37 2013 -0700.

我运行了Matlab的mex -setup命令,然后从Mathworks 实现了这个解决方法,使用Xcode 5作为我的mex编译器.

我使用Matlab命令将macports的pkg-config命令添加到路径中 setenv('PATH', [getenv('PATH') ':/opt/local/bin']);

现在,运行mxopencv.make会产生以下链接器错误消息:

Undefined symbols for architecture x86_64:
  "cv::merge(std::vector<cv::Mat, std::allocator<cv::Mat> > const&, cv::_OutputArray const&)", referenced from:
      MxArray::toMat(int, bool) const in libMxArray.a(MxArray.o)
  "cv::split(cv::Mat const&, std::vector<cv::Mat, std::allocator<cv::Mat> >&)", referenced from:
      MxArray::MxArray(cv::Mat const&, mxClassID, bool) in libMxArray.a(MxArray.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v …
Run Code Online (Sandbox Code Playgroud)

matlab xcode opencv mex

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

wget 和 bash 错误:bash:第 0 行:fg:没有作业控制

我正在尝试通过xargs. 我在文件中创建了一个空分隔的命令列表,cmd_list.txt然后尝试使用 6 个线程并行运行它们,如下所示:

cat cmd_list.txt | xargs -0 -P 6 -I % bash -c %
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误:

bash: line 0: fg: no job control
Run Code Online (Sandbox Code Playgroud)

我已经缩小了与命令列表中各个命令的长度相关的问题。这是一个用于下载图像的人为长命令示例:

mkdir a-very-long-folder-de090952623b4865c2c34bd6330f8a423ed05ed8de090952623b4865c2c34bd6330f8a423ed05ed8de090952623b4865c2c34bd6330f8a423ed05ed8
wget --no-check-certificate --no-verbose -O a-very-long-folder-de090952623b4865c2c34bd6330f8a423ed05ed8de090952623b4865c2c34bd6330f8a423ed05ed8de090952623b4865c2c34bd6330f8a423ed05ed8/blah.jpg http://d4u3lqifjlxra.cloudfront.net/uploads/example/file/48/accordion.jpg
Run Code Online (Sandbox Code Playgroud)

wget在没有文件列表和没有 的情况下单独运行命令xargs,就可以正常工作。但是,在 bash 命令提示符下运行此命令(同样,没有文件列表)会失败并显示no job control error

echo "wget --no-check-certificate --no-verbose -O a-very-long-folder-de090952623b4865c2c34bd6330f8a423ed05ed8de090952623b4865c2c34bd6330f8a423ed05ed8de090952623b4865c2c34bd6330f8a423ed05ed8/blah.jpg http://d4u3lqifjlxra.cloudfront.net/uploads/example/file/48/accordion.jpg" | xargs -I % bash -c %
Run Code Online (Sandbox Code Playgroud)

如果我省略长文件夹名称并因此缩短命令,它可以正常工作:

echo "wget --no-check-certificate --no-verbose -O /tmp/blah.jpg http://d4u3lqifjlxra.cloudfront.net/uploads/example/file/48/accordion.jpg" | xargs -I % bash -c %
Run Code Online (Sandbox Code Playgroud)

xargs …

linux macos bash shell xargs

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

标签 统计

c++ ×2

lldb ×2

macos ×2

opencv ×2

xcode ×2

bash ×1

linux ×1

matlab ×1

mex ×1

python ×1

python-3.x ×1

shell ×1

xargs ×1

xcode5 ×1