所以,我的问题是:
现在,我将NetworkInterface类设为单例,因为我希望它在我写的游戏中只存在一次.
但是,如果我只是用while循环调用方法,它将停止我的整个gqme所以这就是为什么我希望它在不同的线程上运行,所以它不会干扰游戏机制.现在,我使用std :: thread对象在另一个线程上的NetworkInterface中启动方法,但它抛出C3867错误,该错误表明该方法需要是静态的或某种类型(我已经在Google上发现了这个)但是我不知道我知道如何解决这个问题,因为我在该方法中使用的变量也不能是静态的.
我希望这很清楚.简而言之,我如何在程序的单独线程中从类中实现非静态方法.或者,还有更好的方法?(如果弹出,我不想使用Boost库)
正如标题所说,我想为我的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) 我正在尝试使用Boost Asio而不是RakNet,所以我试图跟随Boost网站上的示例,但我有一些问题没有得到答复.这是链接:http://www.boost.org/doc/libs/1_55_0/doc/html/boost_asio/tutorial/tutdaytime1.html
只是抬头,我得到了教程,客户端和服务器.
1)为什么查询需要字符串"daytime"?在服务器设置中找不到它.当我使用该字符串时,客户端似乎只是连接.(试过"测试"并没有连接)
2)为什么我不需要为客户端提供连接端口?它是否会搜索此端口本身,还是可以选择手动设置此端口?
提前致谢.
我正在寻找一种通过Boost Asio的套接字发送由自定义数据结构组成的数据包的方法.目前我了解你可以使用标准的boost asio缓冲区发送一个字符串(在方法boost :: asio :: write(..)中).
例如,是否可以将填充结构中的数据发送到服务器或客户端?如果是,我该怎么做才能做到这一点,因为我找不到相关的文档.
我正在尝试使用 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) 我正在尝试获取使用列表框所需的数据绑定。我已将文本文件中的一些数据解析为 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)