小编Sté*_*ane的帖子

如何在使用Microsoft nmake时获取命令的输出?

随着makeLinux上,我们可以做这样的事情:

foo=$(shell /bin/bar)
Run Code Online (Sandbox Code Playgroud)

它运行命令bar并将输出分配给foo.稍后可以通过引用在makefile中使用它$(foo).

但是现在我手上有一个Microsoft项目,它与Microsoft编译并链接在一起nmake.exe.nmake是否有相同的功能可以让我运行命令并将输出分配给变量?

nmake makefile

6
推荐指数
2
解决办法
1291
查看次数

对于需要生成一些图形的C++项目,建议使用哪种graphviz库API?

我知道有几个版本的Graphviz作为库.但我有点困惑的是哪一个被认为是当前+推荐.我想从linux GUI应用程序生成并显示一些图表.

根据第22页的http://www.graphviz.org/doc/libgraph/Agraph.pdf,Libgraph被Cgraph取代.但该文件被称为Agraph,我觉得很奇怪.

在第23页,它还说Lgraph是Cgraph的C++继承者,因为我使用C++,我想知道更多,但我似乎无法在任何地方找到Lgraph.

也许是相关的,我确实看到有一个名为BGL的Boost库,它支持导入和导出graphviz文件.寻找关于是否优先使用BGL直接使用Graphviz或Lgraph的意见.

如果sudo apt-get install libgraphviz-dev我得到Cgraph,它看起来像在Ubuntu上.在这种情况下,这个问题是确认Cgraph是推荐的库,并询问是否值得考虑Lgraph或BGL.

c++ ubuntu graphviz boost-graph

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

如何使用 libpqxx 中的 pqxx::stateless_cursor 类?

我正在学习 libpqxx,PostgreSQL 的 C++ API。我想使用 pqxx::stateless_cursor 类,但是 1) 我发现 Doxygen 输出在这种情况下没有帮助,2) pqxx.org 网站已经关闭一段时间了。

有人知道如何使用它吗?

我相信这就是我构建一个的方式:

pqxx::stateless_cursor <pqxx::cursor_base::read_only, pqxx::cursor_base::owned>
    cursor( work, "SELECT * FROM mytable", ?, ? );
Run Code Online (Sandbox Code Playgroud)

最后两个参数称为cnamehold,但没有记录。

创建游标后,我将如何在 for() 循环中使用它来一次获取每一行?

c++ postgresql libpqxx

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

用于从用户空间读取设备树的API

是否有API从用户空间读取Open-Firmware设备树?

例如,读取/ sys/firmware/fdt(flattened device tree)?

如果没有,是否发布了文件格式,以便用户空间应用程序可以读取fdt中的条目?

linux device-tree

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

YOLOv3 中的批量和细分

我正在使用来自AlexeyAB 的 Darknet 分支的YOLOv3 和 YOLOv3-Tiny 。我知道图像大小必须是 32 的倍数。除以batch决定subdivisions并行处理的图像数量。

例如,默认的 yolov3.cfg 文件中的批量大小为64,细分为16,这意味着一次将加载 4 个图像,并且需要其中 16 个小批量才能完成一次迭代。

我在 wiki 中没有看到记录的内容:

这些值有限制吗? 它们必须是 16 的倍数吗?2 的幂?我可以有batch=25subdivisions=5吗?

darknet yolo

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

如何使用 libxml2 编写 CDATA 节点?

我正在使用 libxml2 来读/写 xml 文件。现在我正在尝试编写一个 CDATA 节点。

这是我尝试过的:

nodePtr = xmlNewChild( parentPtr, NULL, "foo", NULL );
xmlNodeSetContentLen( nodePtr, "<![CDATA[\nTesting 1 < 2\n]]>", len );
Run Code Online (Sandbox Code Playgroud)

但是,这会导致以下编码文本:

<foo>&lt;![CDATA[
Testing 1 &lt; 2
]]&gt;</foo>
Run Code Online (Sandbox Code Playgroud)

我在想也许有一个特定于 CDATA 的 libxml2 API。或者也许我必须调用其他东西来告诉 libxml2 不要自动编码节点内容?

cdata libxml2

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

linux:如何生成核心文件?

我正在使用Ubuntu 10.04.我运行"ulimit -c 999"然后我编译并执行(gcc test.c && ./a.out)这个小应用程序:

#include <signal.h>

int main( void )
{
    raise( SIGSEGV );

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

即使这确实打印了"分段错误"消息,我也看不到核心文件.我错过了什么阻止生成核心文件?

linux core

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

如何从 PreTranslateMessage(MSG*pMsg) 中的 WM_KEYDOWN 中提取字符

PreTranslateMessage(MSG *pMsg)从 a 继承的 MFC 应用程序中CView,我有这个:

if (pMsg->message == WM_KEYDOWN) ...
Run Code Online (Sandbox Code Playgroud)

此处WM_KEYDOWN记录了 a中的字段。虚拟键值位于并包含多个字段,其中第 16-23 位为键盘扫描码。VK_pMsg->wParampMsg->lParam

所以在我的代码中我使用:

const int virtualKey = pMsg->wParam;
const int hardwareScanCode = (pMsg->lParam >> 16) & 0x00ff; // bits 16-23
Run Code Online (Sandbox Code Playgroud)

例如,在我的非美式键盘上,当我按下“#”字符时,我得到以下信息:

virtualKey == 0xde --> VK_OEM_7 "Used for miscellaneous characters; it can vary by keyboard."
hardwareScanCode == 0x29 (41 decimal)
Run Code Online (Sandbox Code Playgroud)

我想“捕获”或以不同方式处理的字符是 ASCII“#”,0x23(十进制 35)。

我的问题

WM_KEYDOWN无论语言或键盘布局如何,我如何翻译信息以获得我可以比较的内容?我需要确定#用户使用的是标准美式键盘还是其他键盘。

例如,我一直在研究以下功能,例如:

MapVirtualKey(virtualkey, MAPVK_VSC_TO_VK);
// previous line is useless, the key …
Run Code Online (Sandbox Code Playgroud)

windows winapi mfc keyboard-events scancodes

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

C++编译器对此初始化列表的作用是什么?

使用如下的初始化列表时:

for (int i : {3, 1, 6, 4})
{
    std::cout << "i=" << i << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

输出的顺序是相同的顺序,3,1,6,最后是4.所以我知道编译器必须使用类似于std::vector<int>和不使用的东西std::set<int>.

这有保证吗?我在哪里可以找到解释编译器必须如何解释的文档{3, 1, 6, 4}.

c++ initializer-list c++11

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

std::filesystem::copy() 和 std::filesystem::copy_file() 有什么区别?

这段代码中std::filesystem::copy()和之间有什么区别std::filesystem::copy_file()

#include <filesystem>

void testing()
{
    const std::filesystem::path src = "foo.txt";
    const std::filesystem::path dst = "bar.txt";

    std::filesystem::copy(     src, dst, std::filesystem::copy_options::overwrite_existing);
    std::filesystem::copy_file(src, dst, std::filesystem::copy_options::overwrite_existing);
}
Run Code Online (Sandbox Code Playgroud)

文档说:

  • copy():“复制文件或目录”
  • copy_file():“复制文件内容”

由于我在此示例中复制的是单个文件而不是目录,因此这两个调用是否相同?

(我使用的是 g++ 8.2.0。记住链接 libstdc++fs 否则你将有对 std::filesystem 的未定义引用。)

c++ g++ c++17 std-filesystem

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