美文网首页
C与C++混合链接静态库

C与C++混合链接静态库

作者: klince | 来源:发表于2017-10-23 14:34 被阅读0次

本次主要是将C++的静态库链接到一个C的静态库里。编译环境是 mingw。

一、x86环境

1、C++的静态库编译问题。由于用到了 stl 库,所以遇到了 string 和bits/c++config.h 找不到的错误,解决方法是包含目录里增加这两个目录:

D:\MinGW\x86\lib\gcc\mingw32\4.8.1\include\c++\

D:\MinGW\x86\lib\gcc\mingw32\4.8.1\include\c++\mingw32

2、将C++库链接进C时的问题。由于需求完全静态链接,所以要把C++的标准库也静态链接进来,最开始使用的是-static-libstdc++ ,没有成功链接上,于是选择在-Wl,--whole-archive 与-Wl,--no-whole-archive 之间加入 mingw 的C++标准库具体地址,即:

-Wl,--whole-archive \

D:/MinGW/x86/lib/gcc/mingw32/4.8.1/libstdc++.a    \

-Wl,--no-whole-archive

二、安卓环境

1、由于用到了 stl 库,需要在 Android.mk 里增加一行:

APP_STL := stlport_static

2、由于用到了 stl 库,所以遇到了 string 和bits/c++config.h 找不到的错误,解决方法是包含目录里增加这三个目录:

$NDK/sources/cxx-stl/gnu-libstdc++/4.6/include

$NDK/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/include

$NDK/sources/cxx-stl/gnu-libstdc++/4.6/lib

其中NDK=D:/Tools/SDK/android-ndk-r9d 。

3、std::string 找不到和error: undefined reference to 'std::_Rb_tree_decrement(std::_Rb_tree_node_base*) 的报错,在 Android.mk 里增加:

NDK_ROOT=D:/Tools/SDK/android-ndk-r9d

STL_PATH=$(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a

LOCAL_LDLIBS += -L$(STL_PATH) -lsupc++ \

-lgnustl_static

4、写build脚本的时候,先编译新加的库再编译 luajit ,以免各种编译报错(暂时未知原因)。

三、iOS环境

单独写build脚本,将静态库和动态库的Armv7和Arm64版本都分别编译出来之后,使用 libtool 进行链接即可。

相关文章

  • C与C++混合链接静态库

    本次主要是将C++的静态库链接到一个C的静态库里。编译环境是 mingw。 一、x86环境 1、C++的静态库编译...

  • 动态库 静态库

    C++静态库与动态库

  • Java 调用本地代码库

    什么是动态链接库 C/C++编译出来的库有两种:静态链接库和动态链接库。 静态库后缀名在Windows上是.lib...

  • QT中dll的生成及使用

    C++中的库分为三种:静态库、动态库和导入库 1、静态库:     静态库扩展名为.lib,静态链接(即代码会直接...

  • NDK开发中C与C++互相调用处理

    在NDK开发中难免会遇到C与C++混合编程,比如C调用C++写的so库或者C++调用C的函数库,如果不做特别处理...

  • C和C++中动态链接库的创建和链接(原创,装载请注明原处)

    C和C++中动态链接库的创建和链接 1.创建DLL(动态链接库)-C++方式 1.创建DLL(动态链接库-C++方...

  • 静态库与动态库区别

    本文动态库、静态库区别部分转载自C++静态库与动态库 程序的编译过程如上图 静态库: 之所以成为【静态库】,是因为...

  • 【CMake系列】(一)入门

    自从上次在为何 C++ 静态链接库顺序很重要捡回了 C++,自此开始了不归路。 今天我们来说说,CMake 这个现...

  • MT MD 讲解

    (114条消息) 静态库、动态库、静态链接、动态链接、系统运行库混合、MD MT默认库冲突问题wxlfreewin...

  • C/C++与MATLAB混合编程

    C/C++与MATLAB混合编程笔记 1. 简介 C/C++和MATLAB之间的混合编程可以是:C/C++编程的过...

网友评论

      本文标题:C与C++混合链接静态库

      本文链接:https://www.haomeiwen.com/subject/xckauxtx.html