c 11 – Clion&CMake.如何添加库(* .so)
发布时间:2020-12-16 10:00:00 所属栏目:百科 来源:网络整理
导读:我尝试在Clion IDE中编写代码(c / c).我需要在项目中添加一些共享库.在这一刻,我想只运行程序(只有主要功能),它将能够添加我的外部库libAPIenergy.so的任何功能.我从这个论坛尝试了一些解决方案,但任何人都没有帮助. 下面我将介绍给出最少错误的解决方案. 在
我尝试在Clion IDE中编写代码(c / c).我需要在项目中添加一些共享库.在这一刻,我想只运行程序(只有主要功能),它将能够添加我的外部库libAPIenergy.so的任何功能.我从这个论坛尝试了一些解决方案,但任何人都没有帮助.
下面我将介绍给出最少错误的解决方案. 在主要功能我包括 #include "APIenergy.h" CMake文件 cmake_minimum_required(VERSION 3.3) project(TestProject) add_library( libAPIenergy SHARED IMPORTED ) link_directories (/home/I/Lib/Linux/x86) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -lAPIenergy ") set(SOURCE_FILES main.cpp APIenergy.h) add_executable(TestProject ${SOURCE_FILES}) 和错误: /home/I/clion-1.2/bin/cmake/bin/cmake --build /home/I/.CLion12/system/cmake/generated/9faec492/9faec492/Debug --target TestProject -- -j 8 [ 50%] Building CXX object CMakeFiles/TestProject.dir/main.cpp.o [100%] Linking CXX executable TestProject /usr/bin/ld: cannot find -lAPIenergy collect2: error: ld returned 1 exit status CMakeFiles/TestProject.dir/build.make:94${PROJECT_SOURCE_DIR}/P2PTunnelAPIs.h.in": polecenia dla obiektu 'TestProject' nie powiod?y si? make[3]: *** [TestProject] B??d 1 CMakeFiles/Makefile2:67: polecenia dla obiektu 'CMakeFiles/TestProject.dir/all' nie powiod?y si? make[2]: *** [CMakeFiles/TestProject.dir/all] B??d 2 CMakeFiles/Makefile2:79: polecenia dla obiektu 'CMakeFiles/TestProject.dir/rule' nie powiod?y si? make[1]: *** [CMakeFiles/TestProject.dir/rule] B??d 2 Makefile:118: polecenia dla obiektu 'TestProject' nie powiod?y si? make: *** [TestProject] B??d 2 我还使用我的共享库添加到系统PATH LD_LIBRARY_PATH direcytory export LD_LIBRARY_PATH=$HOME/Lib/Linux/x86 .::编辑::. 1 我的CMake在你的消化之后 cmake_minimum_required(VERSION 3.3) project(TestProject) add_library(libAPIenergy SHARED IMPORTED) SET_PROPERTY(TARGET libAPIenergy PROPERTY IMPORTED_LOCATION /home/I/x86/libAPIenergy.so) target_link_libraries(TestProject libAPIEnergy) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") set(SOURCE_FILES main.cpp APIenergy.h) add_executable(TestProject ${SOURCE_FILES}) 来自CMake的错误 Error:Cannot specify link libraries for target "TestProject" which is not built by this project. 还有一件重要的事情.我用项目将APIenergy.h文件部署到主目录. .::编辑2 ::. cmake_minimum_required(VERSION 3.3) project(TestProject) add_library(libAPIenergy SHARED IMPORTED) target_link_libraries(TestProject libAPIenergy) SET_PROPERTY(TARGET libAPIenergy PROPERTY IMPORTED_LOCATION /home/I/lib/x86/libAPIenergy.so) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") set(SOURCE_FILES main.cpp APIenergy.h) add_executable(TestProject ${SOURCE_FILES}) target_link_libraries(TestProject libAPIenergy) 错误 Error:Cannot specify link libraries for target "TestProject" which is not built by this project. .::编辑3 ::. 现在CMake文件没有错误 cmake_minimum_required(VERSION 3.3) project(TestProject) add_library(libAPIenergy SHARED IMPORTED) SET_PROPERTY(TARGET libAPIenergy PROPERTY IMPORTED_LOCATION /home/I/lib/x86/libAPIenergy.so) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") set(SOURCE_FILES main.cpp APIenergy.h) add_executable(TestProject ${SOURCE_FILES}) target_link_libraries(TestProject libAPIenergy) 简单地说我尝试过午餐的代码 #include <iostream> #include "APIenergy.h" // include without error this mean without underlined using namespace std; int main() { int ret = APIenergyInitialize(5); // IDE suggestions name function so is looks good cout << "Hello,World!" << endl; return 0; } 编译错误 /home/I/clion-1.2/bin/cmake/bin/cmake --build /home/I/.CLion12/system/cmake/generated/9faec492/9faec492/Debug0 --target TestProject -- -j 8 [ 50%] Linking CXX executable TestProject /home/I/lib/x86/libAPIenergy.so: error adding symbols: File in wrong format collect2: error: ld returned 1 exit status CMakeFiles/TestProject.dir/build.make:95: polecenia dla obiektu 'TestProject' nie powiod?y si? make[3]: *** [TestProject] B??d 1 CMakeFiles/Makefile2:67: polecenia dla obiektu 'CMakeFiles/TestProject.dir/all' nie powiod?y si? make[2]: *** [CMakeFiles/TestProject.dir/all] B??d 2 CMakeFiles/Makefile2:79: polecenia dla obiektu 'CMakeFiles/TestProject.dir/rule' nie powiod?y si? make[1]: *** [CMakeFiles/TestProject.dir/rule] B??d 2 Makefile:118: polecenia dla obiektu 'TestProject' nie powiod?y si? make: *** [TestProject] B??d 2 解决方法
如果要从源文件创建自己的库,请使用add_library.
如果要指定目标需要链接到其他人的库,请使用target_link_libraries. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- react-native – flex vs flexGrow vs flexShrink vs React
- 一个简单的ajax|jquery实现的留言板(未做安全验证)
- fir.im Weekly - Stanford 的 Swift 课程来了
- ruby-on-rails – 在Ruby on Rails 3中从另一个控制器渲染表
- ‘Task’不包含C#的’CompletedTask’定义
- AJAX - 服务器响应
- Flex Module模块加载
- 正则表达式断言、巡视(Assertions)、正向断言、反向断言介
- ruby-on-rails-3 – 在Haml中将变量打印到控制台以调试Rspe
- cocos2d-x 3.X中Sprite背景图片自动拉伸适应屏幕