c语言工程未编译,CMake初学者的问题:带有第三方库的项目未编译

博主在尝试使用xmlrpc-c库构建C++项目时遇到了链接错误。他们将库作为子目录加入项目,但编译时在调用`xmlrpc_c::registry::addMethod`时遇到未定义引用。问题可能在于库的链接设置不正确。当注释掉这行代码时,程序可以成功编译。
摘要由CSDN通过智能技术生成

所以我现在和cmake斗争了一段时间。我想从这里使用xmlrpc-c库。所以我用main.cpp和cmakelists.txt启动了一个新项目,并将xmlrpc-c作为子目录复制到我的项目中(因为不幸的是xmlrpc-c不是cmake库):

我的代码正是这里的一个示例,看起来如下所示:#include

#include

#include "xmlrpc-c/include/xmlrpc-c/base.hpp"

#include "xmlrpc-c/include/xmlrpc-c/registry.hpp"

#include "xmlrpc-c/include/xmlrpc-c/server_abyss.hpp"

using namespace std;

class hello : public xmlrpc_c::method

{

public:

void execute(const xmlrpc_c::paramList& params, xmlrpc_c::value* retval)

{

string msg(params.getString(0));

params.verifyEnd(1);

cout << msg << endl;

*retval = xmlrpc_c::value_string("XMLRPC server says hello!");

}

};

int main(int argc, char** argv)

{

xmlrpc_c::registry registry;

registry.addMethod("hello", new hello);

xmlrpc_c::serverAbyss server(xmlrpc_c::serverAbyss::constrOpt().registryP(&registry).portNumber(8080));

server.run();

return 1;

}

cmakelists.txt如下所示cmake_minimum_required(VERSION 3.16)

project(xmlrpc_c_server C CXX)

add_executable(xmlrpc_c_server main.cpp)

target_link_libraries(xmlrpc_c_server -lxmlrpc++ -lxmlrpc_server++ -lxmlrpc_server_abyss++ -lxmlrpc_util++)

我遇到的问题是,我的构建过程失败了,出现了一个链接器错误:据我所知,头文件registry.hpp没有正确包含。如果我注释掉代码行registry.addMethod(“hello”,新的hello);,我就可以编译程序而没有任何错误。====================[ Build | xmlrpc_c_server | Debug ]=========================

/usr/bin/cmake --build /mnt/c/Users/valentin.ackva/CLionProjects/xmlrp-c-server/cmake-build-debug --target xmlrpc_c_server -- -j 9

Scanning dependencies of target xmlrpc_c_server

[ 50%] Building CXX object CMakeFiles/xmlrpc_c_server.dir/main.cpp.o

[100%] Linking CXX executable xmlrpc_c_server

/usr/bin/ld: CMakeFiles/xmlrpc_c_server.dir/main.cpp.o: in function `main':

/mnt/c/Users/struppel/CLionProjects/xmlrp-c-server/main.cpp:31: undefined reference to `xmlrpc_c::registry::addMethod(std::__cxx11::basic_string, std::allocator >, xmlrpc_c::method*)'

collect2: error: ld returned 1 exit status

make[3]: *** [CMakeFiles/xmlrpc_c_server.dir/build.make:84: xmlrpc_c_server] Error 1

make[2]: *** [CMakeFiles/Makefile2:76: CMakeFiles/xmlrpc_c_server.dir/all] Error 2

make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/xmlrpc_c_server.dir/rule] Error 2

make: *** [Makefile:118: xmlrpc_c_server] Error 2

少了什么?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值