小编Ade*_*ost的帖子

VSCode中的多行git提交消息

使用VSCode的Git集成提交文件时,是否有任何编写多行提交消息的方法,或者我仅限于一行?

截至目前,VSCode非常适合暂存文件.但似乎我仍然需要从终端写出大部分提交消息.

visual-studio-code

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

在VS2013中构建/包含Boost.Python

有人能告诉我,如果我做错了什么.

我在Windows 7上使用Visual Studio 2013,我希望能够设置一个简单的Boost.Python项目.我不知道我是否在构建提升或在项目中包含提升时出错了.

错误

当我尝试#include任何boost python模块时,例如#include <boost/python/module.hpp>我在Visual Studio中收到以下错误.

1>c:\boost_1_55_0\boost\python\detail\wrap_python.hpp(50): fatal error C1083: Cannot open include file: 'pyconfig.h': No such file or directory
Run Code Online (Sandbox Code Playgroud)

建造

我试图遵循这个SO线程中的指令,其中KTC解决了Python,以及来自Boost的这个Python howto,但由于这两个链接都有点过时,所以做的事情有所不同,并且一些步骤似乎在较新版本的Boost中有所改变,我不得不即兴发布一些指示.

这就是我做的.

  1. 将最新版本(1.55)的Boost源文件解压缩到C:\boost_1_55_0.
  2. 用于cmd.exe导航到C:\boost_1_55_0.(我没有使用Developer Command Prompt for VS2013发现下\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts.这应该没有任何区别,是否应该?提升1.55的官方指南没有具体提及使用Command Prompt for VS2013.
  3. 用于bootstrapcmd.
  4. 编辑project-config.jam(创建bootstrap)并添加了我的Python 3.4安装路径C:\Python34.我的.jam …

c++ python boost visual-studio boost-python

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

收集共同包含在一个文件中 - 良好的做​​法?

我正在努力学习如何处理很多包含,并且仍然保持我的代码整洁.

我正在编写一个Qt应用程序,我把常用的文件(并没有改变)放在一个名为"Util.h"的文件中.

Util.h

#pragma once

#include <Core/IObserver.h>
#include <Core/Math.h>
#include <QAction>
#include <QDockWidget.h>
#include <QFileDialog>
#include <QGraphicsBlurEffect>
#include <QLabel.h>
#include <QMainWindow.h>
#include <QMenu.h>
#include <QMessageBox.h>
#include <QShortcut.h>
#include <QSignalMapper>
#include <QSound>
#include <QString>
#include <QTimer.h>
#include <QTreeView>
#include <QStandardItemModel>


// Path to icons
#define ICON_PATH                                               \
    "../../Assets/GUI/Icons/"
Run Code Online (Sandbox Code Playgroud)

然后我将它包含在几乎所有的头文件中

#include "Util.h"
#include "Manager_Docks.h"
#include "Manager_Tools.h"
#include "Manager_Console.h"
#include "ui_MainWindow.h"
...
Run Code Online (Sandbox Code Playgroud)
  • 有没有更好的方法呢?
  • 这会减慢编译时间吗?

我也想到只在每个.cpp中都包含Util.h,并且对于头文件有一个单独的Header_Util.h,看起来像这样

Header_Util.h

#pragma once

class IObserver;
class QAction;
class QDockWidget;
class QFileDialog; …
Run Code Online (Sandbox Code Playgroud)

c++ include header-files precompiled-headers forward-declaration

7
推荐指数
1
解决办法
2137
查看次数

DirectX 之上的透明 Qt 窗口

我想制作一个透明的无框架 QWidget,它看起来像是在另一个 QWidget 之上渲染的。

我的目的是使用DirectXQt在 3D 游戏之上创建一个HUD

到目前为止,在我的努力中,我的 QMainWindow 包含一个自定义的 DirectX-Widget,它是通过在 DirectX 中创建交换链时将普通 QWidget 的 HWND 传递给 DirectX 创建的,然后使用 QTimer 创建自定义渲染循环(请参阅代码以下)。

然后我尝试渲染一个新的叠加层在 QMainWindow 顶部

通过在叠加上使用以下标志,我可以使其行为与我想要的类似,但我仍然无法摆脱框架。

setWindowFlags(Qt::WindowStaysOnBottomHint);
setAttribute(Qt::WA_TranslucentBackground, true);
setAttribute(Qt::WA_TransparentForMouseEvents);
Run Code Online (Sandbox Code Playgroud)

左图显示了它真正的样子,借助 MS Paint 的魔力,右图就是想要的样子。

调试图像

正如您从图片中看到的,透明度在 DirectX 小部件之上不起作用,但它似乎在普通小部件(例如工具栏)之上起作用之上起作用,当我尝试使用 QPainter 之类的东西时,情况似乎也是如此而不是 DirectX。

有谁知道为什么会发生这种情况?关于如何摆脱 DirectX 中的框架或实现类似的效果有什么建议吗?


源代码

您可以从此处下载完整的Visual Studio 2010项目项目。

可能需要适用于 Qt4 的 Visual Studio Add-in 1.1.112010 年 6 月的 DirectX SDK …

directx user-interface qt transparency hud

5
推荐指数
0
解决办法
2108
查看次数

正则表达式,替换所有出现的子组

我想用"b"替换括号内"a"的"全部"出现.

我有:

std::string s = "a(aaa)a";
std::regex e("(\\(.*?)(a)(.*\\))");
s = std::regex_replace(s, e, "$1b$3");

std::cout << s << std::endl;
Run Code Online (Sandbox Code Playgroud)

它输出:

a(baa)a
Run Code Online (Sandbox Code Playgroud)

但我想要:

a(bbb)a
Run Code Online (Sandbox Code Playgroud)

c++ regex replace

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

限制从 AWS SQS 触发的 AWS Lambda 的并发调用(忽略保留并发)?

对我来说,当我开始时,这似乎是一个简单的用例,但结果比我预期的要困难得多。

问题

我有一个 AWS SQS 作为触发工作线程 AWS Lambda 的作业队列。然而,由于工作 lambdas 共享不可扩展的资源,因此将并发运行的 lambdas 的数量限制为(例如)不超过 5 个同时运行的 lambdas 是很重要的。

根据Lambda 函数的并发管理,足够简单

预留并发也限制了函数的最大并发,适用于整个函数

但是,将Reserved concurrency-property设置为 5 似乎完全被 SQS 忽略,Messages in Flight在我的例子中, queue -property 根据放入队列的消息数量显示接近 20-30 个并发执行。

我最接近的解决方案是使用 SQS FIFO 队列并将MessageGroupId设置为随机选择或在 1-5 之间交替的值。但是,由于工作负载不均匀,这不是最佳选择,因为最好按实际工作负载而不是偶然分配并发。

我还尝试使用 AWS Step Functions,因为Map-state有一个 MaxConcurrency 参数,它似乎在小型作业队列上运行良好,但由于每个状态的输入/输出限制为 32kb,这在我的使用中不可行-案件。

有没有人找到更好的或替代的解决方案?还有其他方法Reserved concurrency应该使用吗?

相似的

以下是我发现的一些类似问题,但我认为我的问题不同,因为我对限制调用总数不感兴趣,并且(虽然我自己没有尝试过)我不明白为什么从 S3 或 Kinesis Steam 触发会表现得与 SQS 不同。

amazon-web-services aws-lambda

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

Visual Studio 2010和2012中STL容器的字节大小的差异

我正在与VS2010和VS2012的项目合作.

VS2010项目调用VS2012中的函数,反之亦然.这开始工作正常,但是当我还需要在两个项目之间共享变量时,我注意到变量似乎没有相同的内存对齐,并且每个项目都以不同的方式解释相同的内存地址.

更新:它似乎只发生在使用STL容器,其他结构和类不包含std ::工作正常.

为了说明问题,以下代码在不同的Visual Studio版本上运行时应该得到不同的结果.

#include <string>
#include <vector>

int main()
{
    int stringSize = sizeof(std::string);           // Yelds 32 on VS2010, 28 on VS2012
    int intVectorSize = sizeof(std::vector<int>);   // Yelds 20 on VS2010, 16 on VS2012

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

不能将这两个项目更新到同一个版本,因为我有一些与每个版本相关的依赖项.

有没有人知道解决方案或绕过问题的方法?

我会尽快将这两个项目升级到VS2012编译器,但是现在我正在寻找一个快速而肮脏的解决方案,所以我可以相处工作.由于它似乎只发生在STL容器中,是否可以在所有项目中使用旧版本的库?或者是否有可能欺骗编译器?也许改变填充大小?

此外,std :: vector中的第一个元素看起来很好,只有向量中的后续元素似乎被扰乱.(见图.)

调试图像

在2010年和2012年编译的"main.cpp"中调试"Fetched"变量的图像.


有人希望我澄清变量的共享方式.

我们在VS2012编译模式下将第一个项目编译成DLL,然后尝试在VS2010中访问该项目.

这是重新创建问题的一些代码.如果您想亲自尝试,可以在此处下载完整的VS2012解决方案.

使用VS2012将此代码编译为DLL.

DllExport.h

#ifdef DLLHELL_EX
#define DLL_API __declspec(dllexport) 
#else
#define DLL_API __declspec(dllimport) 
#endif

#include …
Run Code Online (Sandbox Code Playgroud)

c++ dll stl visual-studio visual-studio-2012

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