Создание динамической библиотеки C ++, которая ссылается на статическую библиотеку C - PullRequest
0 голосов
/ 29 июня 2019

Я пытаюсь создать динамическую библиотеку C ++, которая использует mbedTLS. К сожалению, я получаю "неопределенную ссылку на ..." во время связывания для каждой функции, которую я пытаюсь использовать.

Я собрал mbedTLS с -DCMAKE_POSITION_INDEPENDENT_CODE = Вкл. Я включаю необходимые заголовочные файлы. Я ссылаюсь на полный путь к библиотекам mbed_whever.a. Я пытался обернуть мои включения внешним символом "C" {}.

Я не знаю, что мне не хватает, но должен быть правильный способ сборки.

---------------- Редактировать - запрашиваемая информация -------------------

Согласно Каков идиоматический способ в CMAKE добавить опцию компилятора -fPIC? Я использовал cmake -DCMAKE_POSITION_INDEPENDENT_CODE=On ~/Downloads/mbedtls-2.16.1-apache/mbedtls-2.16.1/ для сборки mbedTLS. Он собран и протестирован без ошибок.

<file>'s includes:
#include "mbedtls/net.h"
#include "mbedtls/ssl.h"
#include "mbedtls/entropy.h"
#include "mbedtls/ctr_drbg.h"
#include "mbedtls/debug.h"

build output:
<file>:<line>: undefined reference to `mbedtls_net_init'
<file>:<line>: undefined reference to `mbedtls_ssl_init'
<file>:<line>: undefined reference to `mbedtls_ssl_config_init'
<file>:<line>: undefined reference to `mbedtls_ctr_drbg_init'
<file>:<line>: undefined reference to `mbedtls_entropy_init'
<file>:<line>: undefined reference to `mbedtls_entropy_func'
<file>:<line>: undefined reference to `mbedtls_ctr_drbg_seed'
collect2: error: ld returned 1 exit status
...