VS2017 Thrift編譯出的Release版本的庫調用報錯LNK2001


 在使用thrift的過程中, 當我使用完thrift debug版本編譯出來的庫調試完成后, 改成release版本的時候, 就出現了如下錯誤, 莫名其妙啊, 同一套代碼, 那只能是編譯庫的時候設置和調用庫時候的設置不一樣, 然后就對影響庫版本的主要原因都一個一個的去對應, 對應完成之后, 發現還是報錯, 剛開始以為那個地方遺漏了, 然后又反反復復的去匹配, 還是一樣的錯誤, 弄了幾個小時, 就為了這一個問題, 毫無頭緒, 最后發現編譯release版本庫的時候報了一個警告, 也沒抱多大希望, 就隨便百度一下, 然后就在修改了一下個人任務無關緊要的配置, 這一改, 重新編譯庫, 重新編譯調用庫的程序, 我去奇跡發生了, 既然編譯通過了, 那真的爽啊, 人一下就輕松了

編譯release警告如下:(這件事情告訴我們, 在我們編譯程序的時候, 請不要忽略任何一個警告, 否則,有你“爽“”的)

LINK : 找到 MSIL .netmodule 或使用 /GL 編譯的模塊;正在使用 /LTCG 重新啟動鏈接;將 /LTCG 添加到鏈接命令行以改進鏈接器性能

修改thrift庫release配置:

工程-> 屬性 -> c/c++ -> 優化 -> 全程序優化 -> 是(/GL) 改成否

報錯如下

1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _SSL_get_rbio
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _SSL_peek
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _SSL_get_shutdown
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _SSL_get_wbio
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _SSL_connect
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _OPENSSL_init_ssl
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _X509_get_ext_d2i
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _TLSv1_method
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _SSL_CTX_set_default_passwd_cb
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _ASN1_STRING_length
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _X509_free
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _ERR_clear_error
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _TLS_method
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _SSL_free
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _SSL_CTX_set_options
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _SSL_get_peer_certificate
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _SSL_new
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _SSL_CTX_free
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _OPENSSL_sk_pop_free
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _SSL_CTX_ctrl
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _ERR_error_string
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _X509_verify_cert_error_string
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _OPENSSL_sk_value
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _SSL_CTX_use_PrivateKey_file
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _SSL_set_fd
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _ASN1_STRING_data
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _CRYPTO_free
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _SSL_CTX_new
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _SSL_write
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _SSL_get_verify_result
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _TLSv1_2_method
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _SSL_CTX_set_default_passwd_cb_userdata
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _SSL_ctrl
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _X509_NAME_ENTRY_get_data
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _TLSv1_1_method
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _SSL_CTX_set_verify
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _X509_get_subject_name
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _OPENSSL_sk_num
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _CONF_modules_unload
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _OPENSSL_init_crypto
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _SSL_accept
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _SSL_pending
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _ERR_get_error
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _X509_NAME_get_index_by_NID
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _SSL_read
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _SSL_CTX_set_cipher_list
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _SSL_CTX_load_verify_locations
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _SSL_CTX_use_certificate_chain_file
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _SSL_shutdown
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _SSL_get_verify_mode
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _ASN1_STRING_to_UTF8
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _ERR_peek_error
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _ERR_reason_error_string
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _BIO_ctrl
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _RAND_poll
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _SSL_get_error
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _ERR_remove_state
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _GENERAL_NAME_free
1>libthrift.lib(TSSLSocket.obj) : error LNK2001: 無法解析的外部符號 _X509_NAME_get_entry
1>D:\RPC\TestRPC\TestRPCDemo\Release\RPC_CLIENT.exe : fatal error LNK1120: 59 個無法解析的外部命令

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM