尝试编译使用共享库的C ++程序时出错

我正在尝试编译一个示例程序,该程序使用C ++中的共享库(也是我开发的),名称为libtestlib.so

错误

我已经编译了共享库,没有问题,但是当我尝试编译使用该库的可执行文件时,出现以下错误: iface/libtestlib.so: undefined reference to 'ALIB::function()'

我做了什么

我已经完成以下工作:

C ++库(中的文件$project_dir/lib1):

// HEADER
#ifndef ALIB_H
#define ALIB_H

namespace ALIB{
    int function();
}

#endif
-------------------------------------------
// SOURCE
#include "alib.h"

using namespace ALIB;

int ALIB::function(){
    return 101;
}

C ++库的C接口(中的文件$project_dir/iface

// HEADER
#ifndef IFACE_H
#define IFACE_H

#include "alib.h"

extern "C"{
    int IFACE_function();
}

#endif
--------------------------------
// SOURCE
#include "iface.h"

int IFACE_function(){
    return ALIB::function();
}
--------------------------------------------------------
// CMakeLists used to build the library:
cmake_minimum_required(VERSION 2.8)
PROJECT( testlib )
include_directories( ../lib1 )
add_library( testlib SHARED iface.cpp )

使用该库的可执行文件(中的文件$project_dir/main):

// SOURCE
#include "iface.h"
#include <iostream>

using namespace std;

int main(){
    cout << IFACE_function() << endl;
}

-------------------------------------

// CMakeLists used to build the executable (file in `$project_dir`):
cmake_minimum_required(VERSION 2.8)
PROJECT( testlib )
find_library( LIB NAMES testlib PATHS ./iface )
include_directories( ./lib1 ./iface )
add_executable( testlib ./main/main.cpp )
target_link_libraries( testlib ${LIB} )

生成的文件

$project_dir:全部由cmake生成。(CmakeLists.txt,CMakeCache,cmake_install.cmake,MakeFile)

$project_dir/lib1alib.cppalib.h

$project_dir/ifaceiface.cpp, iface.h, libtestlib.so和所有由cmake生成。

$project_dir/mainmain.cpp

作为树:

$project_dir
├── CMakeCache.txt
├── CMakeFiles
│   ├── ...
├── cmake_install.cmake
├── CMakeLists.txt
├── CMakeLists.txt~
├── iface
│   ├── CMakeCache.txt
│   ├── CMakeFiles
│   │   ├── ...
│   ├── cmake_install.cmake
│   ├── CMakeLists.txt
│   ├── CMakeLists.txt~
│   ├── iface.cpp
│   ├── iface.h
│   ├── libtestlib.so
│   └── Makefile
├── lib1
│   ├── alib.cpp
│   └── alib.h
├── main
│   └── main.cpp
└── Makefile

多亏袁的评论,我才发现问题所在。我需要通过以下方式alib.cpp文件添加到中CMakeLists.txt

// CMakeLists used to build the library:
cmake_minimum_required(VERSION 2.8)
PROJECT( testlib )
include_directories( ../lib1 )
add_library( testlib SHARED iface.cpp ../lib1/alib.cpp )

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

编译C程序时出错?

来自分类Dev

编译程序时出错

来自分类Dev

编译非常简单的C程序时出错

来自分类Dev

尝试编译MixKit库(C ++)时出错

来自分类Dev

尝试编译C程序

来自分类Dev

编译包含WebView的Qt程序时出错

来自分类Dev

编译外国应用程序时出错

来自分类Dev

尝试调试D程序时出错

来自分类Dev

尝试构建WiX安装程序时出错

来自分类Dev

尝试上传Chrome扩展程序时出错

来自分类Dev

尝试调试D程序时出错

来自分类Dev

尝试上传Chrome扩展程序时出错

来自分类Dev

尝试从终端运行 javascript 程序时出错

来自分类Dev

尝试使用共享库部署 Qt 应用程序时出错

来自分类Dev

使用RXTX运行程序时出错

来自分类Dev

在webpack中使用加载程序时出错

来自分类Dev

运行程序时出错,但编译时不出错

来自分类Dev

尝试使用Cygwin b20在Windows上编译C程序时出错

来自分类Dev

使用Facebook SDK编译应用程序时出错

来自分类Dev

使用Roslyn编译.net核心应用程序时出错

来自分类Dev

java-使用外部jar运行编译的程序时出错

来自分类Dev

使用 javac 在终端中编译 Java 程序时出错

来自分类Dev

在petalinux中编译gstreamer应用程序时出错

来自分类Dev

编译QDbus服务器应用程序时出错?

来自分类Dev

尝试运行简单的Kivy程序时出错(Windows)

来自分类Dev

尝试启动将libtcod用于红宝石的程序时出错

来自分类Dev

尝试编译程序时,c ++无法解析的外部符号

来自分类Dev

编译C程序时找不到共享库

来自分类Dev

将Fortran子例程链接到C ++程序时出错