c++ - nanomsg: Segmentation fault when using cmake -


i'm using nanomsg request/receive , code have works fine when compiled using makefile. when try using cmake, compiles fine runs segmentation fault when trying send message.

does know what's going on? i'm unsure if issue in cmake file or in .cc files.

here minimal working example.

request.cc (its .h file omitted here)

requester::requester(const char* url) {   int socket = nn_socket(af_sp, nn_req);   assert(socket >= 0);   assert(nn_connect (socket, url) >= 0); }  requester::~requester() {   nn_shutdown(socket, 0); }  const char* requester::request_for_sentence(const char* sentence){    int size_sentence = strlen(sentence) + 1;   int bytes = nn_send(socket, sentence, size_sentence, 0); # segmentation fault occurs here   assert(bytes == size_sentence);   char *buf = null;   bytes = nn_recv(socket, &buf, nn_msg, 0);   assert(bytes >= 0);   printf("requester received %s\n", buf);   return buf; } 

request_test.cc

int main(int argc, char** argv) {   extractor::requester my_requester("ipc:///tmp/extractor.ipc");   const char* output = my_requester.request_for_sentence("some input");   cerr << "output: " << output << endl;   return 0; } 

receiver.cc

int main(int argc, char** argv) {   const char* url = "ipc:///tmp/extractor.ipc";   int socket = nn_socket (af_sp, nn_rep);   assert(socket >= 0);   assert(nn_bind (socket, url) >= 0);    while(1){      char *buf = null;     int bytes = nn_recv(socket, &buf, nn_msg, 0);     assert (bytes >= 0);      const char* grammar_for_sentence = extract_for_sentence(buf);      cerr << grammar_for_sentence << endl;      int size_grammar = strlen(grammar_for_sentence) + 1; // '\0'     bytes = nn_send(socket, grammar_for_sentence, size_grammar, 0);     assert(bytes == size_grammar);      nn_freemsg (buf);   }    return 0; } 

makefile works:

cc=g++ cflags = -l$home/opt/lib -i$home/opt/include -lnanomsg  : run_test run_extract_daemon  run_test : extract_request_test.cc extract_request.o     $(cc) $(cflags) -o run_test extract_request_test.cc extract_request.o -i.  run_extract_daemon : extract_daemon.cc     $(cc) $(cflags) -o run_extract_daemon extract_daemon.cc  extract_request.o : extract_request.cc extract_request.h     $(cc) $(cflags) -c extract_request.cc clean :     rm run_test run_extract_daemon extract_request.o 

cmakelists.txt doesn't work:

find_package(nanomsg) if(nanomsg_found)   include_directories(${nanomsg_include_dir})       set(extract_request_test_srcs extract_request_test.cc)   add_executable(run_extractor_request_test ${extract_request_test_srcs})   target_link_libraries(run_extractor_request_test extractor ${nanomsg_libraries})    set(extract_daemon_srcs extract_daemon.cc)   add_executable(run_daemon ${extract_daemon_srcs})   target_link_libraries(run_daemon extractor ${nanomsg_libraries}) endif(nanomsg_found)  set(extractor_stat_srcs     extract_request.cc     extract_request.h)   add_library(extractor static ${extractor_stat_srcs}) 


Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -

How to provide Authorization & Authentication using Asp.net, C#? -