Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在Qtcreator中使用共享对象时出现问题_C++_Shared Libraries_Qt Creator - Fatal编程技术网

C++ 在Qtcreator中使用共享对象时出现问题

C++ 在Qtcreator中使用共享对象时出现问题,c++,shared-libraries,qt-creator,C++,Shared Libraries,Qt Creator,我试图在图书馆中使用ESNI相关的方法。我使用.config&&make&&sudomakeinstall命令克隆并安装了库。安装在/usr/local/lib中的共享对象 首先,我使用nm命令检查了so文件中包含的我必须使用的函数(SSL_CTX_esni_server_enable) pol4bear@pol4bear:~$ nm -D /usr/local/lib/libssl.so | grep -i esni 0000000000026bf0 T SSL_CTX_esni_server

我试图在图书馆中使用ESNI相关的方法。我使用.config&&make&&sudomakeinstall命令克隆并安装了库。安装在/usr/local/lib中的共享对象

首先,我使用nm命令检查了so文件中包含的我必须使用的函数(SSL_CTX_esni_server_enable)

pol4bear@pol4bear:~$ nm -D /usr/local/lib/libssl.so | grep -i esni
0000000000026bf0 T SSL_CTX_esni_server_enable
0000000000026aa0 T SSL_CTX_esni_server_flush_keys
0000000000026a60 T SSL_CTX_esni_server_key_status
0000000000028070 T SSL_CTX_get_esni
0000000000028030 T SSL_CTX_set_esni_print_callback
00000000000266a0 T SSL_esni_checknames
0000000000025ce0 T SSL_ESNI_dec
00000000000280d0 T SSL_ESNI_dup
0000000000026720 T SSL_esni_enable
0000000000024800 T SSL_ESNI_enc
0000000000028f80 T SSL_ESNI_ext_free
00000000000293a0 T SSL_ESNI_ext_print
00000000000212e0 T SSL_ESNI_free
0000000000028040 T SSL_ESNI_get_esni
0000000000029570 T SSL_ESNI_grease_me
0000000000021d50 T SSL_ESNI_new_from_buffer
0000000000023080 T SSL_ESNI_print
0000000000028ff0 T SSL_esni_query
0000000000029320 T SSL_ESNI_reduce
00000000000280b0 T SSL_ESNI_set_nonce
00000000000280a0 T SSL_ESNI_set_private
0000000000021880 T SSL_ESNI_wrap_keyshare
0000000000027e90 T SSL_get_esni_status
0000000000028020 T SSL_set_esni_print_callback
第二,我在Qtcreator中使用“addlibrary”添加了库,并尝试编译下面的代码,但由于“未定义引用'SSL\u CTX\u esni\u server\u enable'”而失败。我怎样才能修好它

#include <iostream>
#include <memory>
#include <openssl/ssl.h>
#include <openssl/esni.h>


using namespace std;

using SSL_CTX_ptr=std::unique_ptr<SSL_CTX, decltype(&SSL_CTX_free)>;

int main()
{
    const SSL_METHOD *method = TLS_method();
    SSL_CTX_ptr ssl(SSL_CTX_new(method), SSL_CTX_free);
    SSL_CTX_esni_server_enable(ssl.get(), "~/esni/hellven1.priv", nullptr);
    cout << "Hello World!" << endl;
    return 0;
}

您能显示使用的编译命令吗?尝试添加
-Wl,--trace
以查看它是否选择了正确的
libssl。那么
为什么要标记这个C?我使用./config&&make&&make install编译了这个库,就像libarary的安装所说的那样。我是否必须执行make-Wl,--trace来检查libssl.so是否正常?我在这个问题中删除了C标记。如果这让你不舒服,我很抱歉
TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt

SOURCES += \
        main.cpp

unix:!macx: LIBS += -L$$PWD/../openssl/ -lssl

INCLUDEPATH += $$PWD/../openssl
DEPENDPATH += $$PWD/../openssl

unix:!macx: LIBS += -L$$PWD/../openssl/ -lcrypto

INCLUDEPATH += $$PWD/../openssl
DEPENDPATH += $$PWD/../openssl