在使用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 個無法解析的外部命令