小编Pas*_* T.的帖子

iPhone和OpenCV

我知道OpenCV被移植到Mac OS X,但我没有找到有关iPhone端口的任何信息.

我不是Mac开发人员,所以我不知道Mac OS X端口是否适合iPhone.

有没有人比我更清楚?

iphone opencv ios

95
推荐指数
5
解决办法
7万
查看次数

Visual Studio解决方案/多项目:如何在多个C++项目中有效地传播项目属性

我正在使用包含多个项目(大约30个)的Visual Studio 2005 C++解决方案.根据我的经验,维护项目的所有属性(即包括路径,lib路径,链接库,代码生成选项......)经常变得很烦人,因为你经常需要点击每个项目才能修改它们.当您有多个配置(Debug,Release,Release 64 bits,...)时,情况会变得更糟.

真人生活的例子:

  • 假设您要使用新库,并且需要将此库的包含路径添加到所有项目.您将如何避免编辑每个项目的属性?
  • 假设您要测试驱动新版本的库(比如版本2.1beta),以便您需要快速更改一组项目的包含路径/库路径/链接库?

笔记:

  • 我知道可以一次选择多个项目,然后右键单击并选择"属性".但是,此方法仅适用于已针对不同项目完全相同的属性:您无法使用它来向使用不同包含路径的项目集添加包含路径.
  • 我也知道可以全局修改环境选项(工具/选项/项目和解决方案/目录),但它不能令人满意,因为它无法集成到SCM中
  • 我也知道可以在解决方案中添加"配置".它没有帮助,因为它使另一组项目属性得以维护
  • 我知道代码集C++ Builder 2009通过所谓的"选项集"为这种需求提供了一个可行的解决方案,它可以被几个项目继承(我同时使用Visual Studio和C++ Builder,我仍然认为C++ Builder在某些方面存在争议到Visual Studio)
  • 我希望有人会建议像CMake这样的"autconf",但是有可能将vcproj文件导入到这样的工具中吗?

projects-and-solutions visual-studio

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

abs vs std :: abs,引用说什么?

当心,我在说::abs(),不是std::abs()

根据cplusplus.com网站,abs对于stdlib.h C版本应该表现不同,如果你包括<cmath>

以下是此页面的摘录(::abs不处理std::abs):

double abs (double x); 
float abs (float x); 
long double abs (long double x);
Compute absolute value
/*
Returns the absolute value of x: |x|.
These convenience abs overloads are exclusive of C++. In C, abs is only declared
in  <cstdlib> (and operates on int values). 
The additional overloads are provided in this header (<cmath>) for the integral types: 
These overloads effectively …
Run Code Online (Sandbox Code Playgroud)

c++ cmath

24
推荐指数
1
解决办法
7277
查看次数

托管C++/CLI类中的auto_ptr或shared_ptr等效项

在C++/CLI中,您可以在托管类中使用本机类型,因为它不允许在托管类中保存本机类的成员:在这种情况下您需要使用指针.

这是一个例子:

class NativeClass
{
....
};


public ref class ManagedClass
{
private:
  NativeClass mNativeClass; // Not allowed !

  NativeClass * mNativeClass; // OK

  auto_ptr<NativeClass> mNativeClass; //Not allowed !
  boost::shared_ptr<NativeClass> mNativeClass; //Not allowed !

};
Run Code Online (Sandbox Code Playgroud)

有没有人知道C++/CLI世界中相当于shared_ptr的东西?

编辑:感谢您的建议,"1800-信息".根据您的建议,我检查了STL.Net,但它仅适用于Visual Studio 2008,它提供容器+算法,但没有智能指针.

c++-cli smart-pointers auto-ptr

9
推荐指数
1
解决办法
6233
查看次数

boost :: mutex /如何测试互斥锁是否被锁定

我知道,我知道,我的消息的标题可能看起来很挑衅,因为boost :: mutex目的不会暴露锁定/解锁(为了避免死锁).

然而,这些方面的提升文档非常简短(至少可以这么说),所以我想问是否有人可以在以下用例中帮助我.

假设你有一个类Foo,它有:
- 一个需要一些时间才能完成的析构函数
- 一个由不同线程调用的方法,但是在销毁期间不应该调用

class Foo
{
 public:

  virtual ~Foo()
  { 
    //Time consuming operations here
  }


  //Method called by a timer belonging to a distinct class 
  void OnTimer()
  {
    //Other time consuming stuff. Should not be called during destruction !
  }  


}; 
Run Code Online (Sandbox Code Playgroud)

我尝试(没有成功)实现基于boost :: mutex的版本

//boost::mutex implementation
class Foo
{
public:
  Foo()
  {
  }

  virtual ~Foo()
  { 
    {
      boost::mutex::scoped_lock lock(mDisposingMutex);
      //Time consuming operations here
    }
  }


  //Method called by a timer belonging to a distinct …
Run Code Online (Sandbox Code Playgroud)

boost mutex

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

启用浮点异常后的Visual C++ /奇怪行为(编译器错误?)

我正在努力获得一种可靠的方法来捕获Visual Studio(2005或2008)下的浮点异常.默认情况下,在visual studio下,浮点异常没有被捕获,并且它们很难捕获(主要是因为它们中的大多数是硬件信号,需要转换为异常)

这是我做的:
- 打开SEH异常处理
(属性/代码生成/启用C++异常:是的SEH异常)
- 使用_controlfp激活浮点异常

我现在抓住异常(如下面的例子中所示,简单的除零除外).但是,一旦我捕获到这个异常,似乎程序被无可挽回地破坏了(因为简单的float初始化,以及std :: cout将不起作用!).

我已经构建了一个简单的演示程序,显示了这种相当奇怪的行为.

注意:此行为已在多台计算机上重现.

#include "stdafx.h"
#include <math.h>

#include <float.h>
#include <iostream>


using namespace std;


//cf http://www.fortran-2000.com/ArnaudRecipes/CompilerTricks.html#x86_FP
//cf also the "Numerical Recipes" book, which gives the same advice 
    //on how to activate fp exceptions
void TurnOnFloatingExceptions()
{
  unsigned int cw;
  // Note : same result with controlfp
  cw = _control87(0,0) & MCW_EM;
  cw &= ~(_EM_INVALID|_EM_ZERODIVIDE|_EM_OVERFLOW);
  _control87(cw,MCW_EM);

}

//Simple check to ensure that floating points math are still working
void CheckFloats() …
Run Code Online (Sandbox Code Playgroud)

floating-point exception divide-by-zero visual-c++

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

如何获得有关列表是可变默认参数的警告?

我在不知情的情况下不小心使用了可变的默认参数

有没有可以发现这一点并警告我的 linter 或工具?

python static-analysis

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

Silverlight 3 - ListBox:如何实现Smooth Scroll并捕获MouseDown/MouseUp事件

我正在尝试根据我的需要调整ListBox的行为,我遇到了几个问题

1)如何以编程方式设置ListBox的滚动位置
ListBox不提供其内部ScrollViewer的访问器,因此您无法将其滚动到任何您想要的位置.

2)如何准确设置垂直滚动(即如何平滑滚动)?
默认情况下,无法通过一次滚动一个完整元素来滚动其他列表(列表框将始终确保第一个元素完全显示)

在大多数情况下这种行为是可以的,但不是我的:我想要一个平稳的运动...),

WPF有一个解决这个问题的方法,但Silverlight没有解决方案(请参阅问题"是否可能实现 - 在-wpf-listview中实现平滑滚动").

3)如何捕获MouseDown和MouseUp事件:
如果您继承ListBox,您可能能够捕获MouseUp和MouseMove事件.但是,MouseUp事件永远不会被触发(我怀疑它被ListBox子元素吃掉了)

silverlight listbox smooth-scrolling

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

数字配方/多维根搜索(使用newt):如何最小化最大错误

这个问题与"C++中的数字配方"一书有关,因此它将保留给了解它的人以及多维优化.

我正在编写一个需要搜索多维根的程序,为了解决这个问题,我使用的是多维牛顿根查找方法,即"newt"程序.

对于那些对细节感兴趣的人,我试图将一个可变形的3D模型拟合到一个物体的立体视图,基于一些特征点(两个摄像机可以看到的特征点).

为此,我使用newt过程如下:

  • 11输入参数:我的可变形模型可以用11个参数建模(由5个几何参数和6个3D对象位置的自由度组成):
  • 14我需要找到根的输出参数:基于摄像机识别的特征点,并给出"输入参数"的设置,我可以计算摄像机看到的特征点与它们之间的一组距离理论位置.我有7个这样的点,所以这给了我14个参数(7个距离乘2,因为我计算两个摄像头的距离)

我的问题是我有比输入参数(11)更多的输出参数(14):每当我调用"newt"时,算法总是收敛,但是它会找到一个解决方案,几乎完美地最小化了11个第一个输出参数,但是剩下的3个参数有很多错误.

但是我希望错误在输出参数之间统一划分.

我已经尝试过下面描述的方法:

  1. 尝试将14个输出参数组合成11个参数(例如,您可以获取某些距离的平均值,而不是使用两个距离).但是我对这种方法并不是100%满意
  2. 根据以下原则混合多种解决方案:
    • 调用mnewt并记住找到的根
    • 更改14输出参数的顺序
    • 再次呼叫mnewt并记住找到的根
    • 计算解决方案是两个找到根的平均值

有没有人知道更通用的方法,其中根查找算法会支持在输出参数之间均匀划分的错误,而不是支持第一个参数?

c++ mathematical-optimization newtons-method numerical-methods

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

C++:const引用和初始化顺序

我想知道我是否正在使用以下的好方法:

  • 我想构造一个父类(类A),这个类应该拥有给定"Foo"类的实例
  • 我希望父类拥有子类成员(类B),并且该成员应该具有对父类的foo成员的引用.

下面的代码似乎有效,但我想知道我是否只是"幸运"编译器足够同情.

为清楚起见,我在下面的评论中添加了评论和我的问题.

谢谢 !

struct Foo
{
  std::string mValue;
};

class B
{
public:
  B(const Foo & foo) : mFoo_External(foo) {}
private:
  const Foo & mFoo_External; //this is an external reference to the member 
                             //(coming from A)
};

class A
{
public:
  //Here is the big question 
  //Shall I use : 
  //  A(const Foo & foo) : mFoo(foo), mB(mFoo) {}  
  //  or the declaration below
  A(const Foo & foo) : mFoo(foo), mB(foo) {}
private:
  //According to my …
Run Code Online (Sandbox Code Playgroud)

c++ const-reference

3
推荐指数
1
解决办法
185
查看次数

Visual Studio 2005(和其他):如何部署调试DLL(msvcp80p.dll和朋友,用于调试目的)

我试图在未安装Visual Studio 2005的远程计算机上运行(和调试)我的应用程序.我当前的问题是我遇到了(in)着名的错误:"应用程序无法启动,因为应用程序配置不正确".

这是我做的:

1)在目标计算机上安装所有必需的vcredist :(我确实需要所有这些版本,因为有些库是几个月前编译的,以前的运行时...).

安装那些redist之后,发布版本运行正常.

2)按照以下MSDN页面上给出的说明安装调试dll:准备测试机器以运行调试可执行文件 以及如何:使用XCopy进行部署

如"准备测试机器以运行调试可执行文件"中所述:

  • 我确实运行了"msiexec/i microsoft_vc80_debugcrt_x86.msm" - >这并没有解决问题.

  • 之后,我添加了"msiexec/i policy_8_0_Microsoft_VC80_DebugMFC_x86.msm" - >也没有运气.

  • 作为最后的手段,我为C:\ Program Files\Common Files\Merge Modules\*VC80*.msm中的所有msm做了"msiexec/i" - >也没有运气

提到的是"使用XCopy部署":

我还复制了(在子文件夹中)的所有子文件夹

  • C:\ Program Files\Microsoft Visual Studio 8\VC\redist\x86\

  • C:\ Program Files\Microsoft Visual Studio 8\VC\redist\Debug_NonRedist\x86\

到我的目标机器上的应用程序目录.问题仍然存在.

有谁知道我可能会缺少什么?

debugging visual-studio-2005 side-by-side visual-studio

3
推荐指数
1
解决办法
2580
查看次数

在iOs Safari和chrome上的Javascript画布缓冲/慢性能

我试图通过直接在pixelData缓冲区上绘制像素来更新javascript画布.基本上我会在每次mousemove/touchmove事件后更新imageData缓冲区上的所有像素,并尝试获得最佳性能.

背景:我正在开发一个基于emscripten的应用程序,其中画布上的绘图是由"本机"代码逐个像素完全绘制的.我在这个问题中给出的例子是一个更简单的例子,我在那里复制了我的问题.

我目前遇到了两个性能问题:

  • 在iOS safari上(在iPad上测试):绘图功能以31 fps调用,但是屏幕上的画布渲染是滞后的(在视觉上,我会说它以10fps最大值更新,加上0.5秒的一些间隔,其中它根本没有更新)
  • 在iOS Chrome上:性能很差,因为我获得了2.9 fps

在桌面Mac上,我获得了稳定的性能:使用firefox的55 fps和使用chrome的45 fps

所以,我有两个问题

  • 如何在iOs safari上强制刷新画布(为了获得真正的30 fps渲染,或者可能会低一点)?
  • 您如何优化性能?我错过了可能的优化吗?

请参考下面的代码:它是一个单独的html文件,可以重现我的问题.

我知道我可以使用webworker,但由于我使用的是emscripten,这不是最佳的(每个webworker都以新的内存开始,我需要记录状态).

请参阅此处的代码(它是一个单独的html文件,js是自包含的).请在画布内移动鼠标以查看计算出的fps.

<canvas width=800 height=600 id="canvas"> </canvas>

<script>


//Disable scroll : usefull for tablets where touch events
//will scroll the page
function DisableScroll()
{
  window.addEventListener("touchmove", function(event) {
    if (!event.target.classList.contains('scrollable')) {
      // no more scrolling
      event.preventDefault();
    }
  }, false);
}

window.requestAnimFrame = (function(){
  return  window.requestAnimationFrame       ||
          window.webkitRequestAnimationFrame ||
          window.mozRequestAnimationFrame    ||
          function( callback ){
            window.setTimeout(callback, 1000 / 60);
          };
})();


window.countFPS = (function () …
Run Code Online (Sandbox Code Playgroud)

javascript html5 canvas ios emscripten

3
推荐指数
1
解决办法
5382
查看次数

使用 decltype(lambda) 的 C++ / 可变参数模板和参数包

很抱歉问一个以前可能会问的问题,但我搜索了足够长的时间并没有找到答案。

我的问题是我想调用一个类型的模板函数,template <typename GenericLambda, typename... LambdaArgs>而不需要总是decltype(my_lambda)先写在模板参数中。

    #include <functional>
    #include <string>

    template <typename GenericLambda, typename... LambdaArgs>
    auto lambda_to_mem_fn() {
        auto ptr = &GenericLambda::template operator() < LambdaArgs... > ;
        auto as_mem_fn = std::mem_fn(ptr);
        return as_mem_fn;
    }

    auto my_lambda = [](auto x, auto y) { return x + y; };


    // imaginary function
    template <????>
    auto make_lambda_to_mem_fn(GenericLambda generic_lambda) 
    {
        // Extract lambda args types and forward them to lambda_to_mem_fn
        using GenericLambda = decltype(generic_lambda);
        lambda_to_mem_fn<GenericLambda, LambdaArgs...>();
    }


    void test() { …
Run Code Online (Sandbox Code Playgroud)

c++ templates decltype variadic-templates c++14

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