克利翁和 CMake。如何添加库(*.so)

2023-11-24

我正在尝试在 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

我还添加到系统路径LD_LIBRARY_PATH与我的共享库的目录

export LD_LIBRARY_PATH=$HOME/Lib/Linux/x86

。::编辑::。 1

My 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

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

Use add_library如果您要从源文件创建自己的库。

Use target_link_libraries如果您指定您的目标需要链接到其他人的库。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

克利翁和 CMake。如何添加库(*.so) 的相关文章

  • 如果异常保存在 std::exception_ptr 中,那么在 catch 语句之外使用异常是否安全?

    我有一个std exception ptr其中有一个例外 我要调用std rethrow exception要获取实际的异常 catch 语句之后的异常是否有效 我的猜测是 因为我仍然持有std exception ptr它仍然有效 参见示
  • Fortran 中的共享库,最小示例不起作用

    我试图了解如何在 Linux 下的 Fortran 中动态创建和链接共享库 我有两个文件 第一个 liblol f90 看起来像这样 subroutine func print lol end subroutine func 我用它编译gf
  • 在 std::vector> 中迭代 const T&

    我有一堂这样的课 class RPNExpr std vector
  • 智能指针+循环+“->”

    有时我真的很确定我想要指针的循环依赖 并且循环上的每个对象都应该能够使用他的指针 所以它不能是weak ptr 我的问题是 这是否意味着我的设计很糟糕 如果我想实现图怎么办 我可以使用智能指针吗 在图中有循环 但是对于weak ptr我不能
  • C++ 类的互斥成员导致编译错误

    我不确定为什么当我向 myClass 添加互斥体成员时会发生这种情况 在本例中为 mu Error C2661 std tuple lt void thiscall MyNameSpace myClass void MyNameSpace
  • 使用 Gradle 在多个 Android 应用程序之间共享 Android 库

    我有 Android 应用程序 A 和 B 我想将每个应用程序中的重复代码提取到共享库 L 中 如何使用 Gradle 执行此操作 我之前见过这个问题的一些排列 但答案很少 最接近 最好的已问问题是这个 多个 Android 应用程序依赖于
  • 如何在 C++ 中对四元结构进行有效排序?

    我有一个包含 x y z 和 w 成员的结构 如何高效排序 在 C 中首先按 x 然后按 y 按 z 最后按 w 如果你想实现字典排序 那么最简单的方法是使用std tie实现小于或大于比较运算符或函子 然后使用std sort http
  • 在 Ubuntu 16.04 上编译 PCL 1.7,CMake 生成的 Makefile 中出现错误

    我正在尝试让 PCL 1 7 点云库 而不是其他 pcl 在 Ubuntu 16 04 上运行 我最终希望用于 C 的东西 但现在我只是想让这些例子工作 我使用的是 Ubuntu GNU 5 3 1 附带的默认编译器和 Cmake 版本 3
  • C++11 中引入了哪些重大更改?

    我知道 C 11 中至少有一项更改会导致一些旧代码停止编译 引入explicit operator bool 在标准库中 替换旧实例operator void 诚然 这将破坏的代码可能是一开始就不应该有效的代码 但它仍然是一个破坏性的变化
  • c++11 为什么这个移动构造函数不起作用?

    我已经编写了下面发布的代码 我希望能够在实例之间移动向量的内容LargeClass 正在使用移动构造函数 但我只得到副本而不是移动 为什么移动语义在这里没有按预期工作 Code include
  • 在生成器表达式中使用 cmake 选项

    我想在生成器表达式中使用 cmake 选项 为了打开某个编译标志 来自文档 https cmake org cmake help v3 10 manual cmake generator expressions 7 html我不清楚如何实现
  • std::regex_match(和 std::regex_search)参数生命周期的限制

    考虑带有签名器的 C 11 函数std regex match std string const std smatch match std regex const re 什么 第一个参数的生命周期有限制吗 我没有找到 任何 但是当我执行以下
  • 在 C++ 中是否有更好的方法一次性执行一组代码而不是使用静态变量检查

    在很多地方我都有一次性初始化的代码 如下所示 int callback method void userData This piece of code should run one time only static int init fla
  • 在cmake中设置PKG_CONFIG_PATH

    我已经在本地构建了 opencv 并将其安装到本地目录 不是系统默认目录 opencv pc存在于该本地文件夹中的 pkgconfig 文件夹下 我怎样才能找到这个opencv pc来自 cmake 因为我想从我的程序链接并包含 openc
  • 如何使用 CMake 安装文件层次结构?

    我使用以下方法创建了文件列表 file GLOB RECURSE DEPLOY FILES PROJECT SOURCE DIR install 我想将所有这些文件安装在 usr myproject 但我想维护已安装文件夹上的文件树 ins
  • 为什么 std::atomic 对象不可复制?

    看起来std atomic类型不可复制构造或复制分配 为什么 是否有技术原因导致无法复制原子类型 或者是故意限制接口以避免某种不良代码 在没有原子指令 或没有所有整数大小的原子指令 的平台上 类型可能需要包含互斥体以提供原子性 互斥锁通常不
  • 获取Android库中的上下文

    我正在编写一个 Android 应用程序 它的一些功能封装在内部库中 但是 要使此功能发挥作用 库需要一个应用程序上下文的实例 为图书馆提供这种上下文的最佳方式是什么 我看到了一些选择 但没有一个有吸引力 Have my library c
  • clang 抱怨 constexpr 函数以防 switch 语句

    struct X enum class E A B static constexpr X A return X E A static constexpr X B return X E B constexpr operator E const
  • is_standard_layout 有什么用?

    据我了解 标准布局允许三件事 空基类优化 通过某些指针转换向后兼容 C 使用offsetof 现在 包含在库中的是is standard layout谓词元函数 但我看不出它在通用代码中有何用处 因为我上面列出的那些 C 功能似乎很少需要在
  • 如何实现可变虚拟成员函数

    所以我有这个功能 virtual void CallRemoteFunction const char pServerGameObjectId const char pFunctionName OVariant arg1 OVariant

随机推荐

  • R中使用strptime()从字符串中提取时间,返回NA

    我试图从 R 中的字符串中提取时间 结果无法停止得到 NA 我尝试了正则表达式标签的多种变体 但似乎无法解决这个简单的问题 任何帮助 澄清表示赞赏 这是我的示例代码 gt x 1 2 7 2013 7 43 gt class x 1 cha
  • 如何使用 Delphi 7 在状态/任务栏按钮中显示进度?

    如果您在 Windows 7 下复制文件 您将看到progress副本的某种形式状态栏或任务栏按钮开始显示进度条的应用程序 使用 Delphi 7 可以实现这一点吗 我有一些冗长的操作 非常适合以这种方式展示它的进展 使用 Total Co
  • PHP 中的网页抓取

    我正在寻找一种方法 可以从用户提供的 URL 中对另一个页面进行小型预览PHP 我只想检索页面的标题 图像 如网站的徽标 和一些文本或描述 如果可用 有没有简单的方法可以在没有任何外部库 类的情况下做到这一点 谢谢 到目前为止 我已经尝试使
  • 保存和加载数据 Visual Basic 的简单方法

    我想知道在 vb 中通过不同形式保存和加载数据的最简单方法是什么 我只想保存用户保存的 3 个 textbox text 并能够将其加载到不同的表单上 如果是用户设置 您可以使用内置的我的设置要保存和加载的对象 来自上面的链接 My Set
  • 检测对背景大小的支持:封面

    什么是检测CSS3支持的保存方法背景尺寸 封面 特别是在 IE 以下测试在 IE 背景大小 to cover div style backgroundSize cover 我在测试时得到的唯一真实结果 if backgroundSize i
  • 是否可以使用椭圆曲线加密技术来加密数据?

    到目前为止我只看到它在数字签名和密钥协商协议中使用 它可以像 RSA 一样用来实际加密数据吗 有这方面的库吗 Edited 我需要类似 RSA 的东西 使用接收者的公钥对数据进行加密 以便稍后他可以使用他的私钥对其进行解密 我知道 ECDH
  • ImageButton:强制方形图标(高度 = WRAP_CONTENT,宽度 = ?)

    在我的水平 LinearLayout 中 我有一个 TextEdit 和一个 ImageButton ImageButton 与 TextEdit 一样高 我希望 ImageButton 的宽度和长度完全相同 目前看来 ImageButto
  • Android proguard 混淆的代码在实际上不应该导致 NullPointerException 的情况下导致了 NullPointerException

    我已经在 Android Marketplace 上分发了一个应用程序 我从一小部分用户 可能是 2 那里收到了错误报告 他们在没有逻辑意义的情况下得到了 NullPointerExceptions 我自己从来无法复制这一点 该代码相对简单
  • 即使事件重新触发后,Flutter BlocListener 也仅执行一次

    我正在实施Reso Coder 干净的架构扑腾中 我按照他的指南将项目分层并使用依赖项注入 在其中一种情况下 我希望出现以下场景 管理员用户登录 在主屏幕上查看数据 对其进行编辑 然后按按钮将数据保存到本地数据库 sqflite 保存数据后
  • 不存在的服务“request_stack”

    我正在编写 Symfony 2 6 应用程序 并且在尝试将 RequestStack 注入服务时遇到了问题 我想要的是能够从我的服务中获取当前请求 但出现以下异常 ServiceNotFoundException The service h
  • 为什么 LISP 中不需要#'(尖引号)符号?

    我正在从 Practical Common Lisp 一书中学习 Lisp 在某一时刻 我应该输入以下代码 1 remove if not evenp 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 我想这里的想法当然是 r
  • 如何在所有子图上方设置一个主标题

    我在用pyplot 我有4个子图 如何在所有子图之上设置一个主标题 title 将其设置在最后一个子图之上 Use pyplot suptitle or Figure suptitle import matplotlib pyplot as
  • Pandas-如果值大于0,则将一列除以另一列?

    我有一个 pandas 数据框 其中包含日期 项目和 2 个值 我想要做的就是输出另一列 如果 B 列大于 0 则输出 A 列 B 列的乘积 如果 B 列等于 0 则输出 0 date item A B C 1 1 2017 a 0 3 0
  • 创建没有 persistence.xml 配置文件的 JPA EntityManager

    有没有办法初始化EntityManager没有定义持久性单元 您能否提供创建实体管理器所需的所有属性 我需要创建EntityManager来自用户在运行时指定的值 更新中persistence xml并且重新编译不是一个选择 任何关于如何做
  • THREE.JS:在网格内部查看几何图形

    当输入几何体 例如球体网格 时 它的行为就像几何体不存在一样 颜色和纹理从外面可见 但是一旦我放大网格 这些属性就消失了 如何使球体网格的颜色和纹理在网格内部可见 mesh material side THREE DoubleSide Or
  • 会话 Bean 的会话状态

    我正在读一本关于 Java EE 6 的书 我遇到了以下部分 无状态 会话 bean 不包含方法之间的对话状态 并且任何 实例可用于任何客户端 有状态 会话bean包含会话状态 必须保留该状态 单个用户的跨方法 对话状态 是什么意思 有人用
  • Linq 中的分层数据 - 选项和性能

    我有一些分层数据 每个条目都有一个 id 和一个 可为空 父条目 id 我想检索树中给定条目下的所有条目 这是在 SQL Server 2005 数据库中 我正在 C 3 5 中使用 LINQ to SQL 查询它 LINQ to SQL
  • 突出显示所有字段的匹配结果

    我希望突出显示匹配的结果 如果我提到字段名称并且它返回突出显示的文本 这对我有用 但是如果我将该字段指定为 all 它不会返回任何值 这对我有用 curl XGET http localhost 9200 my index my type
  • 如何使用 NSCoder 在 swift 中对枚举进行编码?

    背景 我正在尝试使用 NSCoding 协议对字符串样式枚举进行编码 但在与字符串之间转换和返回时遇到错误 我在解码和编码时遇到以下错误 字符串无法转换为 Stage 额外参数 ForKey 在调用中 Code enum Stage Str
  • 克利翁和 CMake。如何添加库(*.so)

    我正在尝试在 Clion IDE 中编写 c c 代码 我需要在我的项目中添加一些共享库 此时 我只想运行主函数 它将添加我的外部库 libAPIenergy so 具有的所有函数 我尝试了该论坛的一些解决方案 但没有一个有帮助 下面我将提