我正在用自己的代码foo.c使用pmemobj_create
中的https://pmem.io/pmdk/manpages/linux/v1.4/libpmemobj/pmemobj_open.3。它接受参数PMEMobjpool *pmemobj_create(const char *path, const char *layout, size_t poolsize, mode_t mode)
。当直接将foo.c
编译为foo.o
时,而不是将foo.o
与test.o
链接时,一切正常。但是当我首先使用[]将foo.c
编译为libfoo.so
时
gcc -c -fPIC foo.c -o foo.o gcc -shared -o libfoo.so foo.o
然后将其与test.o链接,编译成功,但是在执行时,函数
pmemobj_create
的执行失败,并显示错误消息Invalid argument
。我的假设是我编译foo.c
的方式可能是错误的,这导致我传递给pmemobj_create
的参数无效。但是我该如何解决呢?感谢您的任何建议!
我在自己的代码foo.c中使用https://pmem.io/pmdk/manpages/linux/v1.4/libpmemobj/pmemobj_open.3中的pmemobj_create。它使用参数PMEMobjpool * pmemobj_create(const char * path,const char * ...
。so文件是否更改任何类型?