小编Tri*_*lJM的帖子

.NET Standard与.NET Core

我已经了解了.NET Standard和.NET Core之间的区别,但我真的不知道区别是什么,或者何时选择.NET标准库项目以及何时选择.NET Core库项目.

我已经读过.NET Standard是为了确保一组API始终可用,无论使用哪个平台(只要该平台与我选择的.NET标准版本兼容).如果我没有弄错的话,这意味着我可以创建一个.NET Standard类库,然后在任何与我选择的.NET Standard版本兼容的平台上使用它.

使用.NET Core,我已经读过它也是为了跨平台使用,所以如果我选择一个.NET Core库,我似乎也可以在许多平台上使用它,就像.NET Standard一样.

所以最后,我没有看到差异.我什么时候应该使用哪个?他们之间有什么区别?

.net .net-core .net-standard

219
推荐指数
4
解决办法
3万
查看次数

如何使用Qt 5.6在NFC上运行NFC

我正在尝试使用Qt的NFC模块在我的Android手机上阅读NFC标签.

根据这个页面,Qt将从5.6版开始支持Android上的NFC.此版本尚未发布,因此我按照此页面上的说明从源代码构建它,并将其安装在Qt创建器中.

第一步是让标签/卡检测工作,我就卡在那里.我的测试应用程序实例化a QNearFieldManager,检查NFC是否可用并将插槽连接到信号targetDetectedtargetLost.该QNearFieldManager::isAvailable方法报告NFC可用(Qt 5.5没有),但信号targetDetected/ targetLost从未被触发.

以下是我的测试应用程序的代码:

#include <QLabel>
#include <QVBoxLayout>

#include <QNearFieldManager>
#include <QNearFieldTarget>

#include <QDebug>

#include "window.h"

Window::Window(QWidget *parent)
: QWidget(parent)
{
    nfcLabel_ = new QLabel(this);

    QVBoxLayout *mainLayout = new QVBoxLayout;
    mainLayout->addWidget(nfcLabel_, 1);

    setLayout(mainLayout);

    setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));

    setWindowTitle(tr("NFC Test"));

    nfc_ = new QNearFieldManager(this);
    if (nfc_->isAvailable()) {
        nfcLabel_->setText("NFC available");
    } else {
        nfcLabel_->setText("NFC not available");
        qWarning() << "NFC not available";
    }

    nfc_->setTargetAccessModes(QNearFieldManager::NdefReadTargetAccess); // doesn't help

    nfc_->registerNdefMessageHandler(this, …
Run Code Online (Sandbox Code Playgroud)

c++ qt android nfc qt5.6

56
推荐指数
1
解决办法
2276
查看次数

GStreamer在Qt5 raspberry pi中遇到了一般的流错误

我正在尝试使用Raspberry pi 2 B中的QtMediaPlayer播放视频.源代码如下:

QMediaPlayer *media;
QVideoWidget *video;
...
...
media = new QMediaPlayer(parent);
video = new QVideoWidget(parent);
media->setVideoOutput(video);
media->setMedia(QUrl::fromLocalFile("/home/pi/Desktop/test3.mp4"));
media->play();
Run Code Online (Sandbox Code Playgroud)

但结果是一个空白的视频屏幕,并出现以下错误:

** (Bus:2148): WARNING **: ffmpegcolorspace-vo: size 1105920 is not a   
multiple of unit size 829440
Error: "GStreamer encountered a general stream error."
Run Code Online (Sandbox Code Playgroud)

系统信息

运行最新的raspbian Jessie OS,已安装的Qt5.3,已安装的gstreamer0.10-plugins-good/bad/ugly/ffmpeg和已安装的Mpeg-2许可证

这是视频test3.mp4

我在安装了Qt5的Windows中运行此代码; 它在那里工作.但它不适用于Raspberry pi.请告诉我这里我缺少什么.

从壳牌尝试管道

在此输入图像描述

c++ qt ffmpeg gstreamer raspberry-pi2

38
推荐指数
1
解决办法
2048
查看次数

XDE.exe一直使用> 35%的CPU - 这是预期的行为吗?(VS Android模拟器)

我在Visual Studio Android模拟器(2016年4月发布)中有一个Android Marshmallow设备,它启动正常,似乎工作.但是,在运行时,该XDE.exe过程会占用我的CPU(35-40%+),而Hyper-V仅使用~8-10%最大值.

这是正常和预期的行为吗?如果没有,我该如何解决?

我能够跟踪以下DLL的高CPU使用率:

C:\ Program Files(x86)\ Microsoft XDE\10.0.10586.0\Plugins\Microsoft.VisualStudio.Emulator.XdePlugin.dll

...以及运行此方法的以下线程,这是一个循环:

Microsoft.VisualStudio.Emulator.StatusCallback.XdeDeviceStatusCallbackService.StatusCallbackThreadProc()

运行Windows 10移动模拟器映像时,我没有看到XDE的高CPU使用率.

android visual-studio android-emulator visual-studio-2015

23
推荐指数
1
解决办法
1138
查看次数

C/C++中有哪些不同的调用约定,每个含义是什么?

有不同的调用约定在C/C++提供:stdcall,extern,pascal,等有多少这样的调用约定是可用的,什么分别意味着?有没有描述这些的链接?

c c++ winapi calling-convention visual-c++

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

如何使用WASAPI共享模式获得低于10ms的延迟?

根据Microsoft的说法,从Windows 10开始,使用共享模式WASAPI的应用程序可以请求小于10毫秒的缓冲区大小(请参阅https://msdn.microsoft.com/en-us/library/windows/hardware/mt298187%28v=vs. 85%29.aspx).

根据这篇文章,实现如此低的延迟需要一些驱动程序更新,我做了.使用独占模式渲染和捕获流,我测量了大约13ms的总往返延迟(使用硬件环回电缆).这告诉我,至少有一个端点成功实现了<10ms的延迟.(这个假设是正确的吗?)

文章提到应用程序可以使用新IAudioClient3界面查询Windows音频引擎使用的最小缓冲区大小IAudioClient3::GetSharedModeEnginePeriod().但是,此功能总是在我的系统上返回10ms,并且任何尝试使用任一IAudioClient::Initialize()IAudioClient3::InitializeSharedAudioStream()低于10ms的周期初始化音频流总是会导致AUDCLNT_E_INVALID_DEVICE_PERIOD.

为了确保,我还禁用了音频驱动程序中的任何效果处理.我错过了什么?甚至可以从共享模式获得低延迟?请参阅下面的示例代码.

#include <windows.h>
#include <atlbase.h>
#include <mmdeviceapi.h>
#include <audioclient.h>
#include <iostream>

#define VERIFY(hr) do {                                    \
  auto temp = (hr);                                        \
  if(FAILED(temp)) {                                       \
    std::cout << "Error: " << #hr << ": " << temp << "\n"; \
    goto error;                                            \
  }                                                        \
} while(0)


int main(int argc, char** argv) {

  HRESULT hr;
  CComPtr<IMMDevice> device;
  AudioClientProperties props;
  CComPtr<IAudioClient> client;
  CComPtr<IAudioClient2> client2;
  CComPtr<IAudioClient3> client3; …
Run Code Online (Sandbox Code Playgroud)

c++ audio audio-processing wasapi

21
推荐指数
1
解决办法
3929
查看次数

lambda捕获的"这个"是不正确的.GCC编译器错误?

在过去的几天里,我一直在调试一个涉及C++中lambdas的奇怪问题.我已将问题减少到以下症状:

  • this指针被破坏拉姆达内(注:this总是被复制捕获,因此拉姆达应该得到自己的this指针,它指向的App对象)
  • 它仅在存在std::coutprint语句时发生,并在创建lambda之前调用.print语句看似完全不相关(例如print"Hello!").printf()也表现出相同的行为.
  • 它仅在交叉编译时发生.
  • 它使用标准的x86体系结构编译器编译并运行良好(参见示例).
  • 如果我在堆上创建lambda(并在App对象内保存指向它的指针),则不会发生错误.
  • 如果关闭优化(即,如果我设置-O0标志),则不会发生错误.它在优化设置为时发生-O2.

以下是我能想出的最简单,可编译的代码示例,它会导致问题.

#include <iostream>
#include <functional>

class App {

public:

    std::function<void*()> test_;

    void Run() {

        // Enable this line, ERROR is printed
        // Disable this line, app runs o.k.
        std::cout << "This print statement causes the bug below!" << std::endl;

        test_ = [this] () …
Run Code Online (Sandbox Code Playgroud)

c++ lambda arm compiler-bug c++11

18
推荐指数
1
解决办法
891
查看次数

抛出来自noncopyable的可复制类

我有一个框架,它将异常定义为一个不可复制的类,我们从中派生了一个可复制的类(定义一个复制构造函数,调用一个非复制的基类构造函数)

这适用于g ++,但不适用于MSVC 2013.

以下代码将重现该问题:

#include <iostream>

using namespace std;

#if defined _MSC_VER
#define __PRETTY_FUNCTION__ __FUNCTION__
#endif

class u {
  u(const u&) = delete;
  const u& operator=(const u&) = delete;/* the library we use defines it as const u& */
public:
  u() { cout << __PRETTY_FUNCTION__ << "def" << endl; }
protected:
  explicit u(int i) { cout << __PRETTY_FUNCTION__ << "int: " << i << endl; }
};

class e : public u {
public:
  e() { cout << __PRETTY_FUNCTION__ …
Run Code Online (Sandbox Code Playgroud)

c++ visual-c++ c++11

14
推荐指数
1
解决办法
518
查看次数

如何定义自定义跨平台size_t类型?

std::size_t通常用于数组索引和循环计数.根据定义,std::size_tsizeof运算符以及sizeof...运算符和alignof运算符的结果的无符号整数类型(自C++ 11起).它在以下标题中定义:

  • <cstddef>
  • <cstdio>
  • <cstdlib>
  • <cstring>
  • <ctime>
  • <cwchar>

据我了解,这些运算符返回的类型是实现定义的.

我想要的是定义一个自定义size_t,以避免从.cpp我的文件中的上述任何标题中提取不必要的东西,因为在我的文件中我只需要std::size_t.

在C++ 11及更高版本中,我认为我可以使用以下别名:

using size_t = decltype(sizeof(1));
Run Code Online (Sandbox Code Playgroud)

但是,我想以size_t便携/跨平台的方式为C++ 11之前的编译器定义一种类型.

那么有一种可移植的方式来定义size_t前C++ 11吗?

c++ size-t size-type c++11 c++03

12
推荐指数
1
解决办法
761
查看次数

抽象类和唯一指针

我的代码中出现以下错误:

error: allocating an object of abstract class type 'Material'

我不知道如何处理这个案子.

我知道std::make_unique执行分配,所以它不能分配类型的对象Material,但我不知道如何纠正它.

#include <iostream>
#include <memory>

struct Material
{
  Material() = default;
  virtual int get_color() const = 0;
};

struct Basic : public Material
{
  Basic() = default;
  virtual int get_color() const override
  {
    return 1;
  }
};

struct Mix : public Material
{
  Mix(const Material& mat1, const Material& mat2)
    : mat1_(std::make_unique<Material>(mat1))
    , mat2_(std::make_unique<Material>(mat2))
  {}

  virtual int get_color() const override
  {
    return mat1_->get_color() + mat2_->get_color();
  } …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance constructor abstract-class c++14

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