我不是 C++ 编码专家。有一项任务,我必须使用“libproxy-dev”来自动检测代理。
在我的 ubuntu 18 系统中安装了“libproxy-dev”: sudo apt-get install libproxy-dev
导入的 proxy.h : #include
- 尝试创建 pxProxyFactory 对象 pxProxyFactory *pf = px_proxy_factory_new();
尝试构建时出现错误 对“px_proxy_factory_new”的 undefined reference
我的问题:我是否在将 libproxy 链接到 cmake 项目的方式上犯了错误?我必须添加/更改我的 CMakeLists.txt 吗?
最佳答案
简答
您错过了向您的项目添加正确的依赖关系。我假设您必须在 CMakeLists.txt
中添加类似这样的命令:
target_link_libraries(your_target_name proxy)
长答案
我用这个内容创建了一个main.cpp
#include <iostream>
#include <proxy.h>
int main(int argc, char **argv)
{
std::cout << "Hi" << std::endl;
pxProxyFactory *px = px_proxy_factory_new();
return 0;
}
然后我用以下内容创建了一个 CMakeLists.txt
:
cmake_minimum_required(VERSION 3.10)
project(proxy_ex1)
set(MY_SOURCES main.cpp)
add_executable(${PROJECT_NAME} ${MY_SOURCES})
当现在运行 cmake -G "Unix Makefiles"时。 && make
,我得到了和你一样的错误信息:main.cpp:(.text+0x38): undefined reference to 'px_proxy_factory_new'
现在在末尾添加 target_link_libraries
时,我可以编译我的小程序:
cmake_minimum_required(VERSION 3.10)
project(proxy_ex1)
set(MY_SOURCES main.cpp)
add_executable(${PROJECT_NAME} ${MY_SOURCES})
target_link_libraries(${PROJECT_NAME} proxy)
现在我可以用 cmake -G "Unix Makefiles"编译我的程序了。 && 制作
关于c++ - 如何将 libproxy-dev 链接到现有的 cmake 项目(C++)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57545412/