Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

when i make the paracel, i find an error: Could NOT find MsgpackC (missing: MsgpackC_CHECK_FINE) #54

Closed
tuhangdi opened this issue Jan 11, 2017 · 6 comments
Labels

Comments

@tuhangdi
Copy link

tuhangdi commented Jan 11, 2017

-- Find Mespack-C include path: /usr/local/include
-- Performing Test MsgpackC_CHECK_FINE
-- Performing Test MsgpackC_CHECK_FINE - Failed
-- MsgpackC check: 
CMake Error at /usr/local/share/cmake-3.7/Modules/FindPackageHandleStandardArgs.cmake:138 (message):
  Could NOT find MsgpackC (missing: MsgpackC_CHECK_FINE)
Call Stack (most recent call first):
  /usr/local/share/cmake-3.7/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE)
  cmakes/FindMsgpackC.cmake:39 (find_package_handle_standard_args)
  CMakeLists.txt:39 (find_package)


-- Configuring incomplete, errors occurred!
See also "/home/tuhangdi/paracel-master/build/CMakeFiles/CMakeOutput.log".
See also "/home/tuhangdi/paracel-master/build/CMakeFiles/CMakeError.log".
@xunzhang
Copy link
Contributor

xunzhang commented Jan 11, 2017

Hi @tuhangdi . Where did you install the msgpackC library and include? Could you compile the following codes and successfully run it? If not, what is the error?

g++ -std=c++11 main.cc -lmsgpackC

// main.cc
#include <vector>
#include <msgpack.hpp>
int main(int argc, char *argv[])
{
  std::vector<std::string> target;
  target.push_back("Hello,");
  target.push_back("World!");
  msgpack::sbuffer sbuf;  // simple buffer
  msgpack::pack(&sbuf, target);
  msgpack::unpacked msg;    // includes memory pool and deserialized object
  msgpack::unpack(&msg, sbuf.data(), sbuf.size());
  msgpack::object obj = msg.get();
  std::vector<std::string> result;
  obj.convert(&result);
  return 0;
}

I think you need to install MsgpackC >=1.4.2 like https://github.com/douban/paracel/blob/master/.travis.yml#L49

@tuhangdi
Copy link
Author

library path in /usr/local/lib, include path in /usr/local/include, i can compile and run it but output nothing.

@xunzhang
Copy link
Contributor

what is your MsgpackC version: cat /usr/local/include/msgpack/version_master.h?
Could you cat the /home/tuhangdi/paracel-master/build/CMakeFiles/CMakeError.log here?

@tuhangdi
Copy link
Author

tuhangdi commented Jan 12, 2017

[tuhangdi@node3 build]$ cat /usr/local/include/msgpack/version_master.h
#define MSGPACK_VERSION_MAJOR 2
#define MSGPACK_VERSION_MINOR 1
#define MSGPACK_VERSION_REVISION 0

cat /home/tuhangdi/paracel-master/build/CMakeFiles/CMakeError.log

Determining if the pthread_create exist failed with the following output:
Change Dir: /home/tuhangdi/paracel-master/build/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/gmake" "cmTC_84116/fast"
/usr/bin/gmake -f CMakeFiles/cmTC_84116.dir/build.make CMakeFiles/cmTC_84116.dir/build
gmake[1]: 进入目录“/home/tuhangdi/paracel-master/build/CMakeFiles/CMakeTmp”
Building C object CMakeFiles/cmTC_84116.dir/CheckSymbolExists.c.o
/usr/bin/cc     -o CMakeFiles/cmTC_84116.dir/CheckSymbolExists.c.o   -c /home/tuhangdi/paracel-master/build/CMakeFiles/CMakeTmp/CheckSymbolExists.c
Linking C executable cmTC_84116
/usr/local/bin/cmake -E cmake_link_script CMakeFiles/cmTC_84116.dir/link.txt --verbose=1
/usr/bin/cc       CMakeFiles/cmTC_84116.dir/CheckSymbolExists.c.o  -o cmTC_84116 -rdynamic 
CMakeFiles/cmTC_84116.dir/CheckSymbolExists.c.o:在函数‘main’中:
CheckSymbolExists.c:(.text+0x16):对‘pthread_create’未定义的引用
collect2: 错误:ld 返回 1
gmake[1]: *** [cmTC_84116] 错误 1
gmake[1]: 离开目录“/home/tuhangdi/paracel-master/build/CMakeFiles/CMakeTmp”
gmake: *** [cmTC_84116/fast] 错误 2

File /home/tuhangdi/paracel-master/build/CMakeFiles/CMakeTmp/CheckSymbolExists.c:
/* */
#include <pthread.h>

int main(int argc, char** argv)
{
  (void)argv;
#ifndef pthread_create
  return ((int*)(&pthread_create))[argc];
#else
  (void)argc;
  return 0;
#endif
}

Determining if the function pthread_create exists in the pthreads failed with the following output:
Change Dir: /home/tuhangdi/paracel-master/build/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/gmake" "cmTC_c0b78/fast"
/usr/bin/gmake -f CMakeFiles/cmTC_c0b78.dir/build.make CMakeFiles/cmTC_c0b78.dir/build
gmake[1]: 进入目录“/home/tuhangdi/paracel-master/build/CMakeFiles/CMakeTmp”
Building C object CMakeFiles/cmTC_c0b78.dir/CheckFunctionExists.c.o
/usr/bin/cc    -DCHECK_FUNCTION_EXISTS=pthread_create   -o CMakeFiles/cmTC_c0b78.dir/CheckFunctionExists.c.o   -c /usr/local/share/cmake-3.7/Modules/CheckFunctionExists.c
Linking C executable cmTC_c0b78
/usr/local/bin/cmake -E cmake_link_script CMakeFiles/cmTC_c0b78.dir/link.txt --verbose=1
/usr/bin/cc   -DCHECK_FUNCTION_EXISTS=pthread_create    CMakeFiles/cmTC_c0b78.dir/CheckFunctionExists.c.o  -o cmTC_c0b78 -rdynamic -lpthreads 
/usr/bin/ld: cannot find -lpthreads
collect2: 错误:ld 返回 1
gmake[1]: *** [cmTC_c0b78] 错误 1
gmake[1]: 离开目录“/home/tuhangdi/paracel-master/build/CMakeFiles/CMakeTmp”
gmake: *** [cmTC_c0b78/fast] 错误 2


Performing C++ SOURCE FILE Test MsgpackC_CHECK_FINE failed with the following output:
Change Dir: /home/tuhangdi/paracel-master/build/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/gmake" "cmTC_6b82d/fast"
/usr/bin/gmake -f CMakeFiles/cmTC_6b82d.dir/build.make CMakeFiles/cmTC_6b82d.dir/build
gmake[1]: 进入目录“/home/tuhangdi/paracel-master/build/CMakeFiles/CMakeTmp”
Building CXX object CMakeFiles/cmTC_6b82d.dir/src.cxx.o
/usr/bin/c++    -I/usr/local/include  -Wall -std=c++11 -pthread -DMsgpackC_CHECK_FINE   -o CMakeFiles/cmTC_6b82d.dir/src.cxx.o -c /home/tuhangdi/paracel-master/build/CMakeFiles/CMakeTmp/src.cxx
/home/tuhangdi/paracel-master/build/CMakeFiles/CMakeTmp/src.cxx: 在函数‘int main(int, char**)’中:
/home/tuhangdi/paracel-master/build/CMakeFiles/CMakeTmp/src.cxx:12:49: 错误:对‘unpack(msgpack::v1::unpacked*, char*, size_t)’的调用没有匹配的函数
   msgpack::unpack(&msg, sbuf.data(), sbuf.size());
                                                 ^
/home/tuhangdi/paracel-master/build/CMakeFiles/CMakeTmp/src.cxx:12:49: 附注:备选是:
In file included from /usr/local/include/msgpack/unpack.hpp:16:0,
                 from /usr/local/include/msgpack.hpp:14,
                 from /home/tuhangdi/paracel-master/build/CMakeFiles/CMakeTmp/src.cxx:3:
/usr/local/include/msgpack/v2/unpack.hpp:145:31: 附注:msgpack::v1::object_handle msgpack::v2::unpack(const char*, std::size_t, std::size_t&, bool&, msgpack::v1::unpack_reference_func, void*, const msgpack::v1::unpack_limit&)
 inline msgpack::object_handle unpack(
                               ^
/usr/local/include/msgpack/v2/unpack.hpp:145:31: 附注: 备选需要 7 实参,但提供了 3 个
/usr/local/include/msgpack/v2/unpack.hpp:171:31: 附注:msgpack::v1::object_handle msgpack::v2::unpack(const char*, std::size_t, std::size_t&, msgpack::v1::unpack_reference_func, void*, const msgpack::v1::unpack_limit&)
 inline msgpack::object_handle unpack(
                               ^
/usr/local/include/msgpack/v2/unpack.hpp:171:31: 附注:  no known conversion for argument 1 from ‘msgpack::v1::unpacked* {aka msgpack::v1::object_handle*}’ to ‘const char*’
/usr/local/include/msgpack/v2/unpack.hpp:180:31: 附注:msgpack::v1::object_handle msgpack::v2::unpack(const char*, std::size_t, bool&, msgpack::v1::unpack_reference_func, void*, const msgpack::v1::unpack_limit&)
 inline msgpack::object_handle unpack(
                               ^
/usr/local/include/msgpack/v2/unpack.hpp:180:31: 附注:  no known conversion for argument 1 from ‘msgpack::v1::unpacked* {aka msgpack::v1::object_handle*}’ to ‘const char*’
/usr/local/include/msgpack/v2/unpack.hpp:189:31: 附注:msgpack::v1::object_handle msgpack::v2::unpack(const char*, std::size_t, msgpack::v1::unpack_reference_func, void*, const msgpack::v1::unpack_limit&)
 inline msgpack::object_handle unpack(
                               ^
/usr/local/include/msgpack/v2/unpack.hpp:189:31: 附注:  no known conversion for argument 1 from ‘msgpack::v1::unpacked* {aka msgpack::v1::object_handle*}’ to ‘const char*’
/usr/local/include/msgpack/v2/unpack.hpp:199:13: 附注:void msgpack::v2::unpack(msgpack::v1::object_handle&, const char*, std::size_t, std::size_t&, bool&, msgpack::v1::unpack_reference_func, void*, const msgpack::v1::unpack_limit&)
 inline void unpack(
             ^
/usr/local/include/msgpack/v2/unpack.hpp:199:13: 附注: 备选需要 8 实参,但提供了 3 个
/usr/local/include/msgpack/v2/unpack.hpp:228:13: 附注:void msgpack::v2::unpack(msgpack::v1::object_handle&, const char*, std::size_t, std::size_t&, msgpack::v1::unpack_reference_func, void*, const msgpack::v1::unpack_limit&)
 inline void unpack(
             ^
/usr/local/include/msgpack/v2/unpack.hpp:228:13: 附注: 备选需要 7 实参,但提供了 3 个
/usr/local/include/msgpack/v2/unpack.hpp:238:13: 附注:void msgpack::v2::unpack(msgpack::v1::object_handle&, const char*, std::size_t, bool&, msgpack::v1::unpack_reference_func, void*, const msgpack::v1::unpack_limit&)
 inline void unpack(
             ^
/usr/local/include/msgpack/v2/unpack.hpp:238:13: 附注: 备选需要 7 实参,但提供了 3 个
/usr/local/include/msgpack/v2/unpack.hpp:248:13: 附注:void msgpack::v2::unpack(msgpack::v1::object_handle&, const char*, std::size_t, msgpack::v1::unpack_reference_func, void*, const msgpack::v1::unpack_limit&)
 inline void unpack(
             ^
/usr/local/include/msgpack/v2/unpack.hpp:248:13: 附注:  no known conversion for argument 1 from ‘msgpack::v1::unpacked* {aka msgpack::v1::object_handle*}’ to ‘msgpack::v1::object_handle&’
/usr/local/include/msgpack/v2/unpack.hpp:260:24: 附注:msgpack::v2::object msgpack::v2::unpack(msgpack::v1::zone&, const char*, std::size_t, std::size_t&, bool&, msgpack::v1::unpack_reference_func, void*, const msgpack::v1::unpack_limit&)
 inline msgpack::object unpack(
                        ^
/usr/local/include/msgpack/v2/unpack.hpp:260:24: 附注: 备选需要 8 实参,但提供了 3 个
/usr/local/include/msgpack/v2/unpack.hpp:285:24: 附注:msgpack::v2::object msgpack::v2::unpack(msgpack::v1::zone&, const char*, std::size_t, std::size_t&, msgpack::v1::unpack_reference_func, void*, const msgpack::v1::unpack_limit&)
 inline msgpack::object unpack(
                        ^
/usr/local/include/msgpack/v2/unpack.hpp:285:24: 附注: 备选需要 7 实参,但提供了 3 个
/usr/local/include/msgpack/v2/unpack.hpp:295:24: 附注:msgpack::v2::object msgpack::v2::unpack(msgpack::v1::zone&, const char*, std::size_t, bool&, msgpack::v1::unpack_reference_func, void*, const msgpack::v1::unpack_limit&)
 inline msgpack::object unpack(
                        ^
/usr/local/include/msgpack/v2/unpack.hpp:295:24: 附注: 备选需要 7 实参,但提供了 3 个
/usr/local/include/msgpack/v2/unpack.hpp:305:24: 附注:msgpack::v2::object msgpack::v2::unpack(msgpack::v1::zone&, const char*, std::size_t, msgpack::v1::unpack_reference_func, void*, const msgpack::v1::unpack_limit&)
 inline msgpack::object unpack(
                        ^
/usr/local/include/msgpack/v2/unpack.hpp:305:24: 附注:  no known conversion for argument 1 from ‘msgpack::v1::unpacked* {aka msgpack::v1::object_handle*}’ to ‘msgpack::v1::zone&’
/home/tuhangdi/paracel-master/build/CMakeFiles/CMakeTmp/src.cxx:15:22: 错误:对‘msgpack::v2::object::convert(std::vector<std::basic_string<char> >*)’的调用没有匹配的函数
   obj.convert(&result);
                      ^
/home/tuhangdi/paracel-master/build/CMakeFiles/CMakeTmp/src.cxx:15:22: 附注:备选是:
In file included from /usr/local/include/msgpack/object_fwd.hpp:17:0,
                 from /usr/local/include/msgpack/v1/adaptor/adaptor_base_decl.hpp:14,
                 from /usr/local/include/msgpack/adaptor/adaptor_base_decl.hpp:13,
                 from /usr/local/include/msgpack/adaptor/adaptor_base.hpp:13,
                 from /usr/local/include/msgpack/v1/object_decl.hpp:16,
                 from /usr/local/include/msgpack/object_decl.hpp:14,
                 from /usr/local/include/msgpack/object.hpp:13,
                 from /usr/local/include/msgpack.hpp:10,
                 from /home/tuhangdi/paracel-master/build/CMakeFiles/CMakeTmp/src.cxx:3:
/usr/local/include/msgpack/v2/object_fwd.hpp:60:8: 附注:T& msgpack::v2::object::convert(T&) const [with T = std::vector<std::basic_string<char> >*]
     T& convert(T& v) const { return v1::object::convert(v); }
        ^
/usr/local/include/msgpack/v2/object_fwd.hpp:60:8: 附注:  no known conversion for argument 1 from ‘std::vector<std::basic_string<char> >*’ to ‘std::vector<std::basic_string<char> >*&’
In file included from /usr/local/include/msgpack/object.hpp:16:0,
                 from /usr/local/include/msgpack.hpp:10,
                 from /home/tuhangdi/paracel-master/build/CMakeFiles/CMakeTmp/src.cxx:3:
/usr/local/include/msgpack/v2/object.hpp:22:30: 附注:msgpack::v1::object::implicit_type msgpack::v2::object::convert() const
 inline object::implicit_type object::convert() const
                              ^
/usr/local/include/msgpack/v2/object.hpp:22:30: 附注: 备选需要 0 实参,但提供了 1 个
gmake[1]: *** [CMakeFiles/cmTC_6b82d.dir/src.cxx.o] 错误 1
gmake[1]: 离开目录“/home/tuhangdi/paracel-master/build/CMakeFiles/CMakeTmp”
gmake: *** [cmTC_6b82d/fast] 错误 2

Return value: 1
Source file was:

#include <vector>
#include <msgpack.hpp>
int main(int argc, char *argv[])
{
  std::vector<std::string> target;
  target.push_back("Hello,");
  target.push_back("World!");
  msgpack::sbuffer sbuf;  // simple buffer
  msgpack::pack(&sbuf, target);
  msgpack::unpacked msg;    // includes memory pool and deserialized object
  msgpack::unpack(&msg, sbuf.data(), sbuf.size());
  msgpack::object obj = msg.get();
  std::vector<std::string> result;
  obj.convert(&result);
  return 0;
}

@xunzhang
Copy link
Contributor

xunzhang commented Jan 12, 2017

I had an offline interactive talk with @tuhangdi on Google Hangout, this issue is solved now. Since he installed Msgpack-C v2.1.0 which is not backward compatible.

His error message is below compiling this program:

[tuhangdi@node3 msgpack-c]$ g++ -std=c++11 main.cc -lmsgpackC 
main.cc: 在函数‘int main(int, char**)’中:
main.cc:11:49: 错误:对‘unpack(msgpack::v1::unpacked*, char*, size_t)’的调用没有匹配的函数
   msgpack::unpack(&msg, sbuf.data(), sbuf.size());
                                                 ^
main.cc:11:49: 附注:备选是:
In file included from /usr/local/include/msgpack/unpack.hpp:16:0,
                 from /usr/local/include/msgpack.hpp:14,
                 from main.cc:2:
/usr/local/include/msgpack/v2/unpack.hpp:145:31: 附注:msgpack::v1::object_handle msgpack::v2::unpack(const char*, std::size_t, std::size_t&, bool&, msgpack::v1::unpack_reference_func, void*, const msgpack::v1::unpack_limit&)
 inline msgpack::object_handle unpack(
                               ^
/usr/local/include/msgpack/v2/unpack.hpp:145:31: 附注: 备选需要 7 实参,但提供了 3 个
/usr/local/include/msgpack/v2/unpack.hpp:171:31: 附注:msgpack::v1::object_handle msgpack::v2::unpack(const char*, std::size_t, std::size_t&, msgpack::v1::unpack_reference_func, void*, const msgpack::v1::unpack_limit&)
 inline msgpack::object_handle unpack(
                               ^
/usr/local/include/msgpack/v2/unpack.hpp:171:31: 附注:  no known conversion for argument 1 from ‘msgpack::v1::unpacked* {aka msgpack::v1::object_handle*}’ to ‘const char*’
/usr/local/include/msgpack/v2/unpack.hpp:180:31: 附注:msgpack::v1::object_handle msgpack::v2::unpack(const char*, std::size_t, bool&, msgpack::v1::unpack_reference_func, void*, const msgpack::v1::unpack_limit&)
 inline msgpack::object_handle unpack(
                               ^
/usr/local/include/msgpack/v2/unpack.hpp:180:31: 附注:  no known conversion for argument 1 from ‘msgpack::v1::unpacked* {aka msgpack::v1::object_handle*}’ to ‘const char*’
/usr/local/include/msgpack/v2/unpack.hpp:189:31: 附注:msgpack::v1::object_handle msgpack::v2::unpack(const char*, std::size_t, msgpack::v1::unpack_reference_func, void*, const msgpack::v1::unpack_limit&)
 inline msgpack::object_handle unpack(
                               ^
/usr/local/include/msgpack/v2/unpack.hpp:189:31: 附注:  no known conversion for argument 1 from ‘msgpack::v1::unpacked* {aka msgpack::v1::object_handle*}’ to ‘const char*’

Instead, users should install MsgpackC v1.4.2 following this.

@zmxdream
Copy link

zmxdream commented Dec 7, 2019

i meet the same problem ,i install MsgpackC v1.4.2, but the problem still occurs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants