小编Vik*_*son的帖子

C#中的C++联合

我正在将用C++编写的库翻译成C#,关键字"union"只存在一次.在结构中.

将它翻译成C#的正确方法是什么?它做了什么?它看起来像这样;

struct Foo {
    float bar;

    union {
        int killroy;
        float fubar;
    } as;
}
Run Code Online (Sandbox Code Playgroud)

c# c++ unions

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

提升Asio tcp :: acceptor访问冲突异常

我试图创建一个tcp::acceptorlibtorrent::session并排,但是从等待输入时,我得到一个访问冲突异常std::cin.访问冲突发生在Boost IOCP实现中,如堆栈跟踪所示.

  • Windows 8.1
  • MSVC 12.0(Visual Studio 2013)
  • 提升v1.57.0
  • libtorrent-rasterbar v1.0.3

一个让我重现问题的最小例子,

#include <boost/asio.hpp>
#include <libtorrent/session.hpp>

int main(int argc, char *argv[])
{
    boost::asio::io_service io_service;
    boost::asio::ip::tcp::acceptor acceptor(io_service);

    libtorrent::session s;

    std::string line;
    std::getline(std::cin, line); // <----- trigger

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

堆栈跟踪是

lt_test.exe!boost::asio::detail::win_iocp_socket_service_base::do_open(boost::asio::detail::win_iocp_socket_service_base::base_implementation_type & impl, int family, int type, int protocol, boost::system::error_code & ec) Line 300   C++
lt_test.exe!boost::asio::detail::win_iocp_socket_service<boost::asio::ip::tcp>::open(boost::asio::detail::win_iocp_socket_service<boost::asio::ip::tcp>::implementation_type & impl, const boost::asio::ip::tcp & protocol, boost::system::error_code & ec) Line 192  C++
lt_test.exe!boost::asio::socket_acceptor_service<boost::asio::ip::tcp>::open(boost::asio::detail::win_iocp_socket_service<boost::asio::ip::tcp>::implementation_type & impl, const boost::asio::ip::tcp & protocol, …
Run Code Online (Sandbox Code Playgroud)

c++ boost boost-asio libtorrent-rasterbar

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

带问号的钻石

当我显示数据库中的数据时,我的 HTML 属性中会出现这些带有问号的小菱形。我正在使用 EPiServer 和一些自定义属性。

\n\n

这是我收集到的信息

\n\n
    \n
  • 我将数据保存为 XML 文档,因为我使用需要多个定义值的自定义 EPiServer 属性。这是保存为 UTF8 的。

  • \n
  • 只有元素标签中的属性有这个问题,比如align=left 变成align=\xef\xbf\xbdleft\xef\xbf\xbd。那里没有“字符,但我还是得到了钻石。

  • \n
  • 如果我在元素外部使用 " ,它会正常工作并显示。

  • \n
\n\n

有什么线索吗?

\n

encoding attributes episerver

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

确定C++应用程序是否作为桌面桥中的UWP应用程序运行(Project Centennial)

我已经将C++/Win32应用程序打包为appx,它运行正常.但是,由于某些路径不可用,我必须以某种方式确定应用程序是否作为打包的UWP应用程序运行并进行调整.

是否有一个简单的运行时检查可以确定您是否作为打包的UWP应用程序运行?

c++ winapi uwp desktop-bridge

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

多线程,通用锁

我有一个单身类,看起来很像这样,

public class CfgHandler
{
    private static readonly string ConfigDir = "Config";

    public T Get<T>() where T : class, new()
    {
        string cfgFile = Path.Combine(ConfigDir, typeof(T).FullName + ".json");

        if (File.Exists(cfgFile))
        {
            var reader = new JsonReader();
            return reader.Read<T>(File.ReadAllText(cfgFile));
        }

        return null;
    }

    public void Set<T>(T instance) where T : class, new()
    {
        string cfgFile = Path.Combine(ConfigDir, typeof(T).FullName + ".json");

        var writer = new JsonWriter();
        string json = writer.Write(instance);

        File.WriteAllText(cfgFile, json);
    }
}
Run Code Online (Sandbox Code Playgroud)

该类用于多线程环境,我想添加锁.但是对于整个班级来说并不是一把锁,因为我不希望它们之间存在竞争条件cfg.Set<Foo>();,cfg.Set<Bar>()因为它们处理不同的数据.

我想过加入下面的类CfgHandler, …

c# multithreading locking

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