Articles of 提升

C ++错误:睡眠没有在此范围内声明

我在Ubuntu中使用C ++代码块,在GCC 4.7中增加1.46 [yield_k.hpp] 我得到这个编译时间错误: error : Sleep was not declared in this scope 码: #include <iostream> using namespace std; int main() { cout << "nitrate"; cout << flush; sleep(1000); cout << "firtilizers"; return 0; } 我该如何解决这个错误? 我想要程序挂起1秒钟。

为什么GetFileAttributesW(L“C:”)返回FILE_ATTRIBUTE_REPARSE_POINT?

通常, GetFileAttributesW(L"C:")返回0x10 ( FILE_ATTRIBUTE_DIRECTORY ),这是合理的。 在某些情况下, GetFileAttributesW(L"C:")将返回0x2416 ( FILE_ATTRIBUTE_DIRECTORY | FILE_ATTRIBUTE_REPARSE_POINT | FILE_ATTRIBUTE_NOT_CONTENT_INDEXED ) 我想知道是什么让它发生,以及如何摆脱它。 这个问题使boost::filesystem::canonical不能工作。 你有什么主意吗?

如何使用具有Boost Asio套接字的特定networking接口/ Ip?

我有一个Debian / Linux服务器有几个IP地址,全部分配到同一个物理网卡。 /etc/network/interfacesconfiguration文件看起来像这样(xx代表数字) auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 176.xx.xx.144 netmask 255.255.255.0 network 176.xx.xx.0 broadcast 176.xx.xx.255 gateway 176.xx.xx.254 auto eth0:0 allow-hotplug eth0:0 iface eth0:0 inet static address 46.xx.xx.57 netmask 255.255.255.255 broadcast 46.xx.xx.57 auto eth0:1 allow-hotplug eth0:1 iface eth0:1 inet static address 94.xx.xx.166 netmask 255.255.255.255 broadcast 94.xx.xx.166 //IPv6 […]

Boost.Asio的可扩展性

我很好奇其他人推动Boost.Asio在可扩展性方面有多远。 我正在编写一个应用程序,可能会使用接近1000个套接字对象,一些接受器对象和许多计时器对象。 我已经configuration了它,以便有一个线程池调用io_service::run并在适当的地方使用strand s,以确保我的处理程序不会彼此跺脚。 我的平台是红帽企业Linux与升压1.39,但我不反对升级到一个更新的版本升压。

Canot编译使用boost的odeint的C ++

我在Ubuntu 12.04上,并且已经在/ usr / include中有了一些提升。 我做了一个 sudo apt-get install libboost-all-dev 并且也安装了很多文件。 我不想删除这个提升并从源代码安装,因为其他几个软件包依赖于Ubuntu的版本。 这是我想要运行的示例代码: #include <iostream> #include <boost/numeric/odeint.hpp> using namespace std; using namespace boost::numeric::odeint; typedef vector< double > state_type; const double sigma = 10.0; const double R = 28.0; const double b = 8.0 / 3.0; void lorenz( state_type &x , state_type &dxdt , double t […]

在不使用Epoll的Linux上升级Asio

我的印象是,boost :: asio会默认使用epoll设置,而不是select实现,但是在运行一些testing之后,看起来像我的设置正在使用select。 操作系统:RHEL 4 内核:2.6 GCC:3.4.6 我写了一个小testing程序来validation哪个反应器头被使用,看起来像使用select反应器而不是epoll反应器。 #include <boost/asio.hpp> #include <string> #include <iostream> std::string output; #if defined(BOOST_ASIO_EPOLL_REACTOR_HPP) int main(void) { std::cout << "you have epoll enabled." << std::endl; } #elif defined(BOOST_ASIO_DETAIL_SELECT_REACTOR_HPP) int main(void) { std::cout << "you have select enabled." << std::endl; } #else int main(void) { std::cout << "this shit is confusing." << […]

在testserver上,使用Select()连接的Linux TCP失败

我的问题是:我在Linux中编程接口来通过以太网控制GPIB控制器。 要做到这一点,我打开一个TCP套接字,只是发送命令到控制器。 到目前为止,这工作得很好。 我在为Interface写某种unit testing的时候出现了这个问题:为了检查我在一个单独的线程中使用了一个来自boost lib的tcp接受器,并且连接到它而不是实际的控制器。 这也正在工作,但是只要来自接口的connect()调用被阻塞。 但是,因为我需要connect()调用指定的超时,我必须连接到select()函数: // Open TCP Socket m_Socket = socket(PF_INET,SOCK_STREAM,0); if( m_Socket < 0 ) { m_connectionStatus = STATUS_CLOSED; return ERR_NET_SOCKET; } struct sockaddr_in addr; inet_aton(m_Host.c_str(), &addr.sin_addr); addr.sin_port = htons(m_Port); addr.sin_family = PF_INET; // Set timeout values for socket struct timeval timeouts; timeouts.tv_sec = SOCKET_TIMEOUT_SEC ; // const -> 5 […]

如何在Linux中添加boost库到Code :: Blocks

如何将Boot库添加到Linux Ubuntu的Code :: Blocks项目中。 例如,我想添加regex库。 我已经安装了靴子库: sudo apt-get install libboost-all-dev 完整的例子将how to将是最有价值的。

在unix上加强UDP套接字问题 – bind:已经在使用的地址

首先,我知道在同一主题上还有其他几个主题,但是我无法find那些能够帮助我的东西,所以我会试着对我的情况非常具体。 我已经build立了一个简单的UDP客户端/ UDP服务器对,负责在几个并行模拟之间发送数据。 也就是说,模拟器的每个实例都在一个单独的线程中运行,并在UDP套接字上发送数据。 在主线程中,服务器正在运行,并在模拟之间路由消息。 (对于这个问题)服务器代码的重要部分如下所示: UDPServer::UDPServer(boost::asio::io_service &m_io_service) : m_socket(m_io_service, udp::endpoint(udp::v4(), PORT_NUMBER)), m_endpoint(boost::asio::ip::address::from_string("127.0.0.1"), PORT_NUMBER) { this->start_receive(); }; void UDPServer::start_receive() { // Set SO_REUSABLE to true boost::asio::socket_base::reuse_address option(true); this->m_socket.set_option(option); // Specify what happens when a message is received (it should call the handle_receive function) this->m_socket.async_receive_from( boost::asio::buffer(this->recv_buffer), this->m_endpoint, boost::bind(&UDPServer::handle_receive, this, boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred)); }; 这在我的Windows工作站上正常工作。 事情是; 我希望能够在linux集群上运行它,这就是为什么我编译它并试图在集群节点上运行它的原因。 代码编译没有一丝困难,但是当我尝试运行它时,我得到的错误 […]

如何使用C ++ Boost库与pkg-config?

我成功编译并安装了最新版本的Boost库到我的linux机器上。 现在,我希望能够使用pkg-config来简化与GCC提供链接参数的过程。 由于我懒得手工编写我自己的.pc文件,是否有一个脚本/工具,会自动生成所需的.pc文件或以其他方式更新pkg-config与升压标志? (如果某人已经拥有该.pc文件,则也欢迎分享。)