小编Dri*_*ies的帖子

在非静态成员函数上使用c ++ 11多线程

所以,我的问题是:

  • 我有一个名为NetworkInterface的类,它使用RakNet网络库构建.
  • 它拥有一个使用RakNet用来发送和接收数据的while循环的方法.

现在,我将NetworkInterface类设为单例,因为我希望它在我写的游戏中只存在一次.

但是,如果我只是用while循环调用方法,它将停止我的整个gqme所以这就是为什么我希望它在不同的线程上运行,所以它不会干扰游戏机制.现在,我使用std :: thread对象在另一个线程上的NetworkInterface中启动方法,但它抛出C3867错误,该错误表明该方法需要是静态的或某种类型(我已经在Google上发现了这个)但是我不知道我知道如何解决这个问题,因为我在该方法中使用的变量也不能是静态的.

我希望这很清楚.简而言之,我如何在程序的单独线程中从类中实现非静态方法.或者,还有更好的方法?(如果弹出,我不想使用Boost库)

c++ networking multithreading

8
推荐指数
1
解决办法
6697
查看次数

无法在VS 2015 C++项目中更改.NET Target Framework版本

正如标题所说,我想为我的C++项目更改.NET Target Framework版本.我正在尝试使用/ clr命令进行编译,我认为应该启用它?

这是一个截图: 在此输入图像描述

我正在尝试构建一个在Unity中使用的DLL,我希望能够选择适当的框架.

我已经尝试更改.vxproj文件中的信息,但我找不到正确的标记,当我自己添加它时会抛出错误.

编辑:

这是包含可以在C#中调用以使用我之前编写的C++代码的方法的代码.我只编辑了CLR类库的.h文件(所以.cpp文件只包含我觉得应该没用的标题)

#pragma once
#include "PortAudioManager.h"

using namespace System;

namespace PortAudioWrapper {

public ref class PortAudioManaged
{
private:
    PortAudioManager* audioManager;
public:
    PortAudioManaged() : audioManager(new PortAudioManager()) {
    }

    virtual ~PortAudioManaged() {
        this->!PortAudioManaged();
    }

    // = Object.Finalize
    !PortAudioManaged() {
        delete audioManager;
        audioManager = nullptr;
    }

    void openStreamManaged() {
        audioManager->openStream();
    }

    void stopStreamManaged() {
        audioManager->stopStream();
    }
};
}
Run Code Online (Sandbox Code Playgroud)

c# c++ clr visual-studio-2015

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

Boost Asio:关于本教程的一些问题(同步日间服务器/客户端)

我正在尝试使用Boost Asio而不是RakNet,所以我试图跟随Boost网站上的示例,但我有一些问题没有得到答复.这是链接:http://www.boost.org/doc/libs/1_55_0/doc/html/boost_asio/tutorial/tutdaytime1.html

只是抬头,我得到了教程,客户端和服务器.

1)为什么查询需要字符串"daytime"?在服务器设置中找不到它.当我使用该字符串时,客户端似乎只是连接.(试过"测试"并没有连接)

2)为什么我不需要为客户端提供连接端口?它是否会搜索此端口本身,还是可以选择手动设置此端口?

提前致谢.

c++ boost boost-asio

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

在Boost Asio缓冲区中打包struct

我正在寻找一种通过Boost Asio的套接字发送由自定义数据结构组成的数据包的方法.目前我了解你可以使用标准的boost asio缓冲区发送一个字符串(在方法boost :: asio :: write(..)中).

例如,是否可以将填充结构中的数据发送到服务器或客户端?如果是,我该怎么做才能做到这一点,因为我找不到相关的文档.

c++ boost boost-asio

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

PortAudio 回调和 ASIO sdk 的输入延迟

我正在尝试使用 portaudio 库和 ASIO sdk 从我的吉他获取输入以通过我的计算机播放。

我一直在关注官方网站上的一些教程来设置基础知识。目前我让它工作,所以 portaudio 正在监听正确的输入和输出设备,我有回调设置来只输出输入并且不做任何事情,如下所示:

static int paTestCallback(const void *inputBuffer, void *outputBuffer, unsigned long framesPerBuffer, const PaStreamCallbackTimeInfo* timeInfo, PaStreamCallbackFlags statusFlags, void *userData)
{
    float *out = (float*)outputBuffer;
    float* in = (float*)inputBuffer;

    for (int i = 0; i<framesPerBuffer; i++)
    {
        *out++ = *in++;  /* left */
        *out++ = *in++;  /* right */
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这个回调是通过调用这个来设置的:

PaError error = Pa_OpenDefaultStream(&stream, 2, 2, paFloat32, 44100, paFramesPerBufferUnspecified, paTestCallback, &data);
Pa_StartStream(stream);
Run Code Online (Sandbox Code Playgroud)

现在,这确实有效,但是当我敲击吉他的弦以及通过监听音箱听到它时,我有很多延迟(大约 0.5 秒)。

有没有办法解决这个延迟?我需要重写回调方法吗?

编辑:

所以,我使用这段代码而不是基本的代码得到了更好的延迟 Pa_OpenDefaultStream()

int …
Run Code Online (Sandbox Code Playgroud)

c++ portaudio asio steinberg-asio

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

C# wpf 列表框未从 ObservableCollection 更新

我正在尝试获取使用列表框所需的数据绑定。我已将文本文件中的一些数据解析为 aObservableCollection<ViewModel>但列表框中的数据未更新。

以下是一些信息:

从解析器写入的数据:

class MainData
{
    private static ObservableCollection<GroupViewModel> groupModelList = new ObservableCollection<GroupViewModel>();
    public static ObservableCollection<GroupViewModel> GroupModelList
    {
        get { return groupModelList; }
    }
}
Run Code Online (Sandbox Code Playgroud)

成立的内容GroupViewModel(不是全部,但都是一样的):

class GroupViewModel : INotifyPropertyChanged
{
    private GroupModel groupModel;

    public event PropertyChangedEventHandler PropertyChanged;

    public GroupViewModel()
    {
        groupModel = new GroupModel();
    }

    public string Name
    {
        get { return groupModel.name; }
        set
        {
            if (groupModel.name != value)
            {
                groupModel.name = value;
                InvokePropertyChanged("Name");
            }
        }
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

以及什么GroupModel是成立的:

class …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml listbox mvvm

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