Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体

0
votes
answers
楼主
26 views
+10

的boost :: message_queue ::接收/發送不與最新版本

1

當我使用Boost 1.53.0,我用的發送和接收這樣的:的boost :: message_queue ::接收/發送不與最新版本

int i=0; 
msg_queue.send(&i, sizeof(i), 0); 

int number; 
unsigned int priority = 0; 
boost::interprocess::message_queue::size_type recvd_size; 
msg_queue.receive(&number, sizeof(number), recvd_size, priority); 

現在,使用最新的1.65.1版本,我得到一個無效的參數錯誤,這個問題似乎是的sizeof()

Boost文檔沒有1.53.0版本1.65.1之間切換。 Message_queue Doc

發送的簽名和接收需要SIZE_TYPE我曾經的sizeof(),我試圖將它轉換爲SIZE_TYPE,使用SIZE_TYPE可變,但是在運行時我會遇到一個庫錯誤。

感謝您的幫助了。

編輯: 要將用戶的要求,這裏是我得到的這取決於什麼我嘗試不同的錯誤消息。

#1 attempt: msg_queue.receive(&number, sizeof(number), recvd_size, priority); 
#1 Error at compile time: Invalid arguments 'Canditates are: void send(const void *, ?, unsigned int)' 
#1 Comment: Same error for Message_Queue::Send() 

與之前版本相同的代碼,我能夠發送和接收值。

+0

什麼是完整的,完整的錯誤消息? –

沙发
0
0

沒有看到真正的編譯器錯誤,我認爲這個問題是不是priority。它應該通過左值引用傳遞,但類型不匹配(應該是無符號):

#include <boost/interprocess/ipc/message_queue.hpp> 

namespace bip = boost::interprocess; 

bip::message_queue msg_queue(bip::open_or_create, "bla", 10, 10240); 

int main() { 
    int i=0; 
    msg_queue.send(&i, sizeof(i), 0); 

    int number; 
    unsigned priority = 0; 
    boost::interprocess::message_queue::size_type recvd_size; 
    msg_queue.receive(&number, sizeof(number), recvd_size, priority); 
} 

升壓的確沒有1.531.65.1但也許你的代碼或編譯器做之間切換。

看到它Live On Coliru

+0

事實上,當務之急是無符號的,我只是犯了一個錯誤,而在計算器上書面方式。 「沒有看到真正的編譯器錯誤」是什麼意思? – vincedjango

discard