我将创建一个新的库,将基因组注释呈现为图表.但是,由于C++没有像Perl这样的集中式库网站,我如何知道命名空间是否与现有命名空间冲突?
我正在尝试制作一个电子应用程序。然而,我的工作一开始就停滞不前:require关键字给了我一个字符串,而不是模块对象。
electron = require('electron')
console.log(electron)
Run Code Online (Sandbox Code Playgroud)
它打印:
/path/to/my/project/node_modules/_electron@1.6.11@electron/dist/electron
Run Code Online (Sandbox Code Playgroud)
,完全不能作为模块使用。
相比之下,如果我导入一个内置模块或另一个 npm 安装的模块:
fs = require('fs')
console.log(fs)
mkdirp = require('mkdirp')
console.log(mkdirp)
Run Code Online (Sandbox Code Playgroud)
它打印对象层次结构,包括变量和函数。
以下是选举目录的内容,不知道是否健康:
$ ls node_modules/electron
appveyor.yml cli.js CONTRIBUTING.md dist electron.d.ts index.js install.js issue_template.md LICENSE node_modules package.json path.txt README.md test
Run Code Online (Sandbox Code Playgroud) boost选项解析器允许指定一个变量来存储选项值,而不是使用以下so_long["typing"].as<bool>()方式:
bool flag_value;
entries.add_options()
("flag", value<bool>(&flag_value), "a simple flag value");
......
cout<<"flag value is: "<<flag_value<<endl;
Run Code Online (Sandbox Code Playgroud)
但是,上述选项声明不会创建简单的标志选项.它实际上要求你输入一些东西作为值(--flag true | false | on | off | yes | no | 1 | 0),这不是我想要的.
那么,有没有办法将结果存储在一个布尔值中,并仍然将选项保持为一个简单的标志?
我有一个使用 FindBoost.cmake 来定位 boost 的 cmake 控制包。我的两个用户向我报告了这个错误,但我无法在我的计算机上重现它。
在解决目标可执行文件的依赖关系时,make 声明以下错误:
make[2]: *** No rule to make target `/usr/lib64/lib64/libboost_filesystem-mt.so.5', needed by `src/ht-asm'. Stop.
Run Code Online (Sandbox Code Playgroud)
在添加目标“ht-asm”之前,我已经在我的 makefile 中设置了库目录:
link_directories(
${Boost_LIBRARY_DIRS}
)
Run Code Online (Sandbox Code Playgroud)
我完全不知道这个问题,因为我从来没有在我的电脑上遇到过它们(一台使用 Debian 6,另一台使用 Fedora 18)。
Intel 提供了几个 SIMD 命令,它们似乎都对 128 位数据执行按位异或:
_mm_xor_pd(__m128d, __m128d)
_mm_xor_ps(__m128, __m128)
_mm_xor_si128(__m128i, __m128i)
Run Code Online (Sandbox Code Playgroud)
按位操作不是只对位流进行操作吗?为什么有三个操作类型不同但数据大小相同?
我写了以下代码并在gcc上测试了它:
// firstly some platform-specific workarounds
#if _MSC_VER
#define ALN_BEGIN(x) __declspec(align(x))
#define ALN_END(x)
#define alignof(x) __alignof(x)
#else
#define ALN_BEGIN(x)
#define ALN_END(x) __attribute__((aligned(x)))
#define alignof(x) __alignof__(x)
#endif
// struct have three 4-byte members, but aligned at 32 byte
ALN_BEGIN(32) struct Foo
{
float a;
float b;
float c;
} ALN_END(32);
// show its size and alignment
int main(int argc, char** argv)
{
printf("size %d, alignment%d\n", sizeof(Foo), alignof(Foo));
}
Run Code Online (Sandbox Code Playgroud)
当我使用gcc编译并运行时,虽然Foo只为其所有成员提供了12个字节,但是sizeof(Foo)得到32这是对齐大小.尺寸扩展是根据语言标准(可靠)还是仅作为GCC的功能?
我正在创建一个对象池类,所以我必须精确地处理类型大小和对齐.
例如:
a = some_process_that_generates_integer_result()
b = a
Run Code Online (Sandbox Code Playgroud)
有人告诉我,b和a将指向同一块整数对象,因此b将修改该对象的引用计数.代码PyObject* ast2obj_expr(void* _o)在Python-ast.c中执行:
static PyObject* ast2obj_object(void *o)
{
if (!o)
o = Py_None;
Py_INCREF((PyObject*)o);
return (PyObject*)o;
}
......
case Num_kind:
result = PyType_GenericNew(Num_type, NULL, NULL);
if (!result) goto failed;
value = ast2obj_object(o->v.Num.n);
if (!value) goto failed;
if (PyObject_SetAttrString(result, "n", value) == -1)
goto failed;
Py_DECREF(value);
break;
Run Code Online (Sandbox Code Playgroud)
但是,我认为修改引用计数而不更改所有权实际上是徒劳的.我期望的是每个包含原始值(浮点数,整数等)的变量总是有自己的值,而不是引用同一个对象.
在执行我的简单测试代码时,我发现上面的Num_kind分支中的断点永远不会到达:
def some_function(x, y):
return (x+y)*?x-y)
a = some_function(666666,66666)
print a
b = a …Run Code Online (Sandbox Code Playgroud) 我正在使用cmake来配置我的项目.似乎QtCreator只显示那些引用的文件add_executable,add_library和configure_file.项目目录中的其他文件在" 项目"面板中不可见.
虽然我们仍然可以通过file-> open访问这些文件,但是让我感觉很糟糕,许多重要的源文件在" 项目"面板中是不可见的.所以...
=======================
一些额外的信息:
我的项目是一个带有PerlXS接口的C++库.XS代码由xsubpp预处理为C代码,此操作通过add_custom_target添加到cmake项目中.但是,QtCreator不会将XS文件添加到Porjects面板中.此外,项目可以包含非源文本文件,如README,Changes等.
例如:
class Base1 {};
class Base2 {};
class Derived: publid Base1, public Base2 {};
// object is stored on a void* slot
void* void_slot = new Derived();
// ... many decades after ...
//object is fetched from the void* slot
Base2* obj = (Base2*) void_slot;
obj->some_base2_method();
Run Code Online (Sandbox Code Playgroud)
我认为这可能不安全.不dynamic_cast<>解决这个问题?
Base2* obj = dynamic_cast<Base2*> void_slot;
Run Code Online (Sandbox Code Playgroud)
更多背景:
我正在从Perl调用C++库.构造C++对象时,它存储在Perl值的整数槽中(a的IV值SV),就像a void*; 当您调用方法时,将从中转换对象指针IV,并使用对象指针调用相应的C++方法.因此我猜它可能有问题,因为指向基类型的指针可能与指向派生类型的指针不同,尤其是当存在多个继承时.
我在PerlMonks上发布了一个类似的问题,但没有得到太多响应.所以我在这里问一下,从C++的角度来看.
我想要的很简单:将H.264视频流包装到FLV容器中。但是,ffmpeg只是解码输入流并将原始视频流打包到FLV中。详细信息如下:
输入流是从硬件编码器摄像机捕获的,FLV将被发送到某些视频服务器。首先,我使用以下命令:
$ ffmpeg -framerate 15 -s 320x240 -i /dev/video1 -f flv "rtmp://some.website.com/receive/path"
Run Code Online (Sandbox Code Playgroud)
但是,结果流是可疑的。看方没有收到任何H.264内容。然后,我通过将输出写入本地文件进行了测试。
1:读取原始流,通过h264_omx编码,写入FLV文件:
$ ffmpeg -framerate 15 -s 320x240 -i /dev/video0 -codec h264_omx -f flv raw_input_h264_omx.flv
......
Input #0, video4linux2,v4l2, from '/dev/video0':
Duration: N/A, start: 194017.870905, bitrate: 18432 kb/s
Stream #0:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422, 320x240, 18432 kb/s, 15 fps, 15 tbr, 1000k tbn, 1000k tbc
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (h264_omx))
......
Run Code Online (Sandbox Code Playgroud)
2:读取H264流,写入FLV文件:
$ ffmpeg -framerate 15 -s …Run Code Online (Sandbox Code Playgroud) c++ ×3
cmake ×2
boost ×1
cpython ×1
electron ×1
ffmpeg ×1
flv ×1
h.264 ×1
inheritance ×1
namespaces ×1
node.js ×1
python ×1
qt-creator ×1
simd ×1
sse2 ×1