草庐IT

c++ - 从 RGB 值数组中切出平面(就地)的算法

我有一个字节RGB值的平面数组,它是R1G1B1R2G2B2R3G3B3...RnGnBn。所以我的数据看起来像:charimageData[WIDTH*HEIGHT*3];但我想将WIDTH*HEIGHT数组传递给现有的C库,该库需要此数据的单个平面。那将是一个仅包含R值(或仅是G,或仅是B)的序列。分配新数组和复制数据非常简单(呃)。但是图像非常大。如果它不是C库而是采用某种迭代接口(interface)来巧妙地进行“切片”遍历,那就太好了。但是我无法编辑正在调用的代码...它需要一个指向顺序内存块的普通旧指针。但是我有这个数组的写权限。创建一个将其分类为颜色平面的例程是可行的。我

c++ - 对 WinRT 接口(interface)的动态调用

我想从C或C++对WinRT对象进行动态(即基于反射)调用。我将假设我在运行时有可用的winmd文件,这样我就可以找出这些方法是什么以及它们采用什么参数。在OLE自动化中,IDispatch随后可用于进行实际调用。但是,WinRT对象不支持IDispatch。我怎样才能打电话?根据处理器的COM调用约定,我是否需要某种允许动态传递参数的FFI库?或者我真的需要“静态”类/结构声明(对于C/C++)吗?编辑:目标系统是一个metro风格的应用程序。这排除了涉及禁用API的解决方案。 最佳答案 当然可以构建您所描述的内容-在幕后,这正是

c++ - 如何在没有 Objective-C 的情况下创建 NSAutoreleasePool?

我有一个用C++编写的多平台游戏。在mac版本中,即使我没有任何obj-c代码,我使用的库之一似乎是自动释放的东西,而且我会因此发生内存泄漏,因为我没有创建NSAutoreleasePool。我想要的是能够在不使用obj-c代码的情况下创建(和销毁)NSAutoreleasePool,因此我不需要创建.m文件,也不需要为此更改我的构建脚本。那可能吗?怎么办?OBS:标记为C和C++,因为任何这些语言的解决方案都可以。 最佳答案 您无法避免实例化Objective-C运行时—但显然您已经拥有了其中之一。如果您想与C的运行时交互,您可以

c++ - 带有动态加载库的 undefined symbol "typeinfo"

我正在尝试在动态加载的Linux上使用gcc4.6构建一个共享库。正如网络上的许多文章以及之前的问题所述,我在库中提供了c风格的工厂方法来创建和销毁对象。代码-最小形式-如下所示:基础.h:classbase{public:base();virtual~base();virtualintvalue()=0;};基础.cpp:#include"base.h"base::base(){}base::~base(){}主要.cpp:#include"base.h"#include#includeintmain(){void*handle=dlopen("liblib.so",RTLD_NOW

c++ - 如何从 ProgID 或 CLSID 获取类型库(不加载 COM 对象)?

在给定类型库中包含的COM类的ProgID或CLSID的情况下,如何以编程方式获取类型库的路径或LIBID,而不实例化COM对象?对于某些COM对象,您可以通过注册表路径实现HKEY_CLASSES_ROOT\CLSID\{clsid}\TypeLib但是有些COM对象没有TypeLib键,比如Word.Application:如何在不实例化COM对象的情况下确定这些COM对象的类型库路径或LIBID? 最佳答案 类型库可能与给定的CLSID相关联,也可能不相关联。如果您在注册表中没有类型库引用,您可能更幸运地在运行时使用IDisp

c++ - 使用 GNU 科学库 (GSL) 使用不均匀分布的点绘制 2D B 样条路径

我正在尝试使用GNU科学库(GSL)绘制从A到B的平滑路径。我使用的API返回少量(在本例中为8个)不规则间隔的点(红色)),您可以在下图中看到:紫色点代表我希望看到从GSL返回的点。首先,这种2DB-Spline形状可以用GSL得到吗?我不太了解B样条曲线,更不用说2DB样条曲线了。我能够获得显示的B样条曲线示例here运行并创建一个流畅的.ps文件没有问题,但该示例使用带有以下代码的统一断点:/*useuniformbreakpointson[0,15]*/gsl_bspline_knots_uniform(0.0,15.0,bw);在我的例子中,鉴于我提供的数据不稳定且间隔不均匀

c++ - 构建依赖于非 const-correct 库的 const-correct (C++) 库

我正在用C++构建一个库(主要是为了好玩),我已经研究了一段时间(多年,哈哈,这只是一种爱好)我最近将一些基础(阅读、库依赖)切换到了另一个库。不幸的是,该库根本不关心“const-correctness”。我有点强制症,我喜欢挑战自己以“正确的方式™”做事,所以我想让我的库const-correct。我已经开始了几次,有些部分是;我知道最好从一开始就开始const-correct但这并不真正相关或值得辩论。事实上,我有兴趣再次认真地尝试它,但另一个图书馆阻止我这样做。你可能会问,这是怎么回事?好吧,如果我正在调用一个显然应该是const的方法(实际上并没有改变任何东西),并且我的方法

c++ - 使用 ffmpeg 从网络摄像头捕获帧和从 micro 捕获音频并保存到文件

在过去的几周里,我一直在努力使用ffmpegAPI,因为我找不到明确的文档,而且我也发现很难搜索,因为我在网上找到的所有解决方案都涉及ffmpeg.c而不是cAPI命令行程序。我正在创建一个程序,它需要从网络摄像头和音频中捕获视频,在屏幕上显示帧并将音频和帧记录到视频文件中。我也在使用QT作为这个项目的框架。我已经能够在屏幕上显示帧甚至记录它们,但我的问题是音频和视频的记录。我决定创建一个更简单的测试程序,它只将流保存到文件而不在屏幕上显示帧,从remuxing.cexample开始在ffmpeg文档上。我的代码如下://Thisisthevariablesonthe.hAVOutpu

c++ - ZED SDK 加载共享库时出错 : libGLEW. so.1.13:无法打开共享对象文件:没有这样的文件或目录

我正在尝试从ZEDSDK运行ZEDExplorer应用程序。但是当我这样做时,我得到了这个错误:errorwhileloadingsharedlibraries:libGLEW.so.1.13:cannotopensharedobjectfile:Nosuchfileordirectory我尝试使用SO中提到的其他解决方案来修复它,但没有成功。 最佳答案 看来您的软件需要GLEW库,而您缺少共享库libGLEW.so.1.13,因此您必须安装它。通过aptitude或apt-cache寻找:sudoapt-cachesearchli

c++ - 双重包含和仅 header 库 stbi_image

我有一个包含a.h的main.cpp(它有自己的a.cpp)a.h仅包含header库“stbi_image.h”:#ifndefSTB_IMAGE_IMPLEMENTATION#defineSTB_IMAGE_IMPLEMENTATION#include"stb_image.h"#endif(https://github.com/nothings/stb)*.cpp使用#pragmaonce包含它自己的*.h但我仍然得到:LNK1169oneormoremultiplydefinedsymbolsfoundLNK2005stb-failurereasonalreadydefinedi