c++ - poco c++ 库静态链接与/MT 错误

标签 c++ windows static-linking poco-libraries

我在 poco 库中使用加密包。

应用程序已发布/MT,我链接到 PocoCryptomt.lib、PocoFoundationmt.lib

PocoCryptomt.lib是用静态vc openssl库libeay32mt.lib构建的 我用这个代码

#define POCO_STATIC
#include <iostream>
#include <Poco\Crypto\Cipher.h>
#include <Poco\Crypto\CipherFactory.h>
#include <Poco\Crypto\CipherKey.h>
#include <string>
using namespace std;
using namespace Poco::Crypto;
typedef std::vector<unsigned char> ByteVec;
void main()
{
unsigned char k[]={49, 17, 199, 69, 242, 178, 153, 25, 129, 86, 8, 125, 151, 171, 20, 162, 4, 247, 64, 221, 42, 57, 80, 69, 48, 164, 8, 34, 44, 24, 9, 90};
    unsigned char i[]={ 219, 157, 180, 130, 179, 204, 171, 242, 251, 112, 209, 173, 100, 219, 141, 179};

    ByteVec key= ByteVec(k,k+sizeof(k)/sizeof(unsigned char));
    ByteVec iv= ByteVec(i,i+sizeof(i)/sizeof(unsigned char));

    //CipherFactory& cf = CipherFactory::defaultFactory;
    CipherFactory& cf = CipherFactory::defaultFactory();
    Cipher* c=cf.createCipher(CipherKey("aes-256",key,iv));
    string plain="Ahmed";
    string crypted=c->encryptString(plain,Cipher::ENC_BASE64);
    string decrypted=c->decryptString(crypted,Cipher::ENC_BASE64);
    cout<<plain<<endl<<crypted<<decrypted;
    cout<<endl;system("PAUSE");
}

出现以下错误

1>------ Rebuild All started: Project: Encryption, Configuration: Release Win32 ------
1>  Main.cpp
1>PocoCryptomt.lib(CipherKeyImpl.obj) : error LNK2001: unresolved external symbol _EVP_get_cipherbyname
1>PocoCryptomt.lib(CipherKeyImpl.obj) : error LNK2001: unresolved external symbol _EVP_CIPHER_flags
1>PocoCryptomt.lib(CipherKeyImpl.obj) : error LNK2001: unresolved external symbol _EVP_BytesToKey
1>PocoCryptomt.lib(CipherKeyImpl.obj) : error LNK2001: unresolved external symbol _EVP_md5
1>PocoCryptomt.lib(CipherKeyImpl.obj) : error LNK2001: unresolved external symbol _EVP_CIPHER_key_length
1>PocoCryptomt.lib(CipherKeyImpl.obj) : error LNK2001: unresolved external symbol _EVP_CIPHER_block_size
1>PocoCryptomt.lib(CipherKeyImpl.obj) : error LNK2001: unresolved external symbol _EVP_CIPHER_iv_length
1>PocoCryptomt.lib(CipherImpl.obj) : error LNK2001: unresolved external symbol _ERR_error_string
1>PocoCryptomt.lib(RSACipherImpl.obj) : error LNK2001: unresolved external symbol _ERR_error_string
1>PocoCryptomt.lib(CipherImpl.obj) : error LNK2001: unresolved external symbol _ERR_get_error
1>PocoCryptomt.lib(RSACipherImpl.obj) : error LNK2001: unresolved external symbol _ERR_get_error
1>PocoCryptomt.lib(CipherImpl.obj) : error LNK2001: unresolved external symbol _EVP_CipherInit
1>PocoCryptomt.lib(CipherImpl.obj) : error LNK2001: unresolved external symbol _EVP_CIPHER_CTX_cleanup
1>PocoCryptomt.lib(CipherImpl.obj) : error LNK2001: unresolved external symbol _EVP_CIPHER_CTX_block_size
1>PocoCryptomt.lib(CipherImpl.obj) : error LNK2001: unresolved external symbol _EVP_CipherUpdate
1>PocoCryptomt.lib(CipherImpl.obj) : error LNK2001: unresolved external symbol _EVP_CipherFinal_ex
1>PocoCryptomt.lib(RSACipherImpl.obj) : error LNK2001: unresolved external symbol _RSA_size
1>PocoCryptomt.lib(RSAKeyImpl.obj) : error LNK2001: unresolved external symbol _RSA_size
1>PocoCryptomt.lib(RSACipherImpl.obj) : error LNK2001: unresolved external symbol _RSA_public_encrypt
1>PocoCryptomt.lib(RSACipherImpl.obj) : error LNK2001: unresolved external symbol _RSA_private_decrypt
1>PocoCryptomt.lib(OpenSSLInitializer.obj) : error LNK2001: unresolved external symbol _CRYPTO_set_dynlock_destroy_callback
1>PocoCryptomt.lib(OpenSSLInitializer.obj) : error LNK2001: unresolved external symbol _CRYPTO_set_dynlock_lock_callback
1>PocoCryptomt.lib(OpenSSLInitializer.obj) : error LNK2001: unresolved external symbol _CRYPTO_set_dynlock_create_callback
1>PocoCryptomt.lib(OpenSSLInitializer.obj) : error LNK2001: unresolved external symbol _CRYPTO_set_locking_callback
1>PocoCryptomt.lib(OpenSSLInitializer.obj) : error LNK2001: unresolved external symbol _CRYPTO_num_locks
1>PocoCryptomt.lib(OpenSSLInitializer.obj) : error LNK2001: unresolved external symbol _RAND_seed
1>PocoCryptomt.lib(OpenSSLInitializer.obj) : error LNK2001: unresolved external symbol _OPENSSL_add_all_algorithms_noconf
1>PocoCryptomt.lib(OpenSSLInitializer.obj) : error LNK2001: unresolved external symbol _SSL_load_error_strings
1>PocoCryptomt.lib(OpenSSLInitializer.obj) : error LNK2001: unresolved external symbol _SSL_library_init
1>PocoCryptomt.lib(OpenSSLInitializer.obj) : error LNK2001: unresolved external symbol _OPENSSL_config
1>PocoCryptomt.lib(OpenSSLInitializer.obj) : error LNK2001: unresolved external symbol _ERR_free_strings
1>PocoCryptomt.lib(OpenSSLInitializer.obj) : error LNK2001: unresolved external symbol _EVP_cleanup
1>PocoCryptomt.lib(RSAKeyImpl.obj) : error LNK2001: unresolved external symbol _EVP_PKEY_get1_RSA
1>PocoCryptomt.lib(RSAKeyImpl.obj) : error LNK2001: unresolved external symbol _X509_get_pubkey
1>PocoCryptomt.lib(RSAKeyImpl.obj) : error LNK2001: unresolved external symbol _BN_free
1>PocoCryptomt.lib(RSAKeyImpl.obj) : error LNK2001: unresolved external symbol _RSA_generate_key_ex
1>PocoCryptomt.lib(RSAKeyImpl.obj) : error LNK2001: unresolved external symbol _BN_set_word
1>PocoCryptomt.lib(RSAKeyImpl.obj) : error LNK2001: unresolved external symbol _BN_new
1>PocoCryptomt.lib(RSAKeyImpl.obj) : error LNK2001: unresolved external symbol _RSA_new
1>PocoCryptomt.lib(RSAKeyImpl.obj) : error LNK2001: unresolved external symbol _PEM_read_bio_RSAPrivateKey
1>PocoCryptomt.lib(RSAKeyImpl.obj) : error LNK2001: unresolved external symbol _BIO_free
1>PocoCryptomt.lib(RSAKeyImpl.obj) : error LNK2001: unresolved external symbol _PEM_read_bio_RSAPublicKey
1>PocoCryptomt.lib(RSAKeyImpl.obj) : error LNK2001: unresolved external symbol _BIO_ctrl
1>PocoCryptomt.lib(RSAKeyImpl.obj) : error LNK2001: unresolved external symbol _BIO_new
1>PocoCryptomt.lib(RSAKeyImpl.obj) : error LNK2001: unresolved external symbol _BIO_s_file
1>PocoCryptomt.lib(RSAKeyImpl.obj) : error LNK2001: unresolved external symbol _BIO_new_mem_buf
1>PocoCryptomt.lib(RSAKeyImpl.obj) : error LNK2001: unresolved external symbol _RSA_free
1>PocoCryptomt.lib(RSAKeyImpl.obj) : error LNK2001: unresolved external symbol _PEM_write_bio_RSAPrivateKey
1>PocoCryptomt.lib(RSAKeyImpl.obj) : error LNK2001: unresolved external symbol _EVP_des_ede3_cbc
1>PocoCryptomt.lib(RSAKeyImpl.obj) : error LNK2001: unresolved external symbol _PEM_write_bio_RSAPublicKey
1>PocoCryptomt.lib(RSAKeyImpl.obj) : error LNK2001: unresolved external symbol _BIO_s_mem
1>PocoCryptomt.lib(RSAKeyImpl.obj) : error LNK2001: unresolved external symbol _BN_bn2bin
1>PocoCryptomt.lib(RSAKeyImpl.obj) : error LNK2001: unresolved external symbol _BN_num_bits
1>F:\WorkShop\c++\Win32\Encryption\Release\Encryption.exe : fatal error LNK1120: 50 unresolved externals
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========

它适用于/MD、PocoCryptomd.lib、PocoFoundationmd.lib 我该怎么做才能解决这个问题

最佳答案

您必须链接 ssleay32[mt].lib 以及 libeay32[mt].lib。

关于c++ - poco c++ 库静态链接与/MT 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8993805/

相关文章:

c++ - 如何在正在运行的进程中找到函数指针的地址?

windows - 在 Jenkins 中执行 WIndows bat 文件

c - 将 libvips 静态链接到 Windows 中的 Rust 程序

qt - QtWebEngine 依赖应用程序的静态构建

c++ - OpenGL 在正射和透视问题之间切换

c++ - 在配置中编辑值。文件

windows - Perl 文件::查找 Windows 反斜杠目录路径

windows - 如何在 IIS7 Windows Server 2008 R2 上启用 TLS1.2

c++ - 如何在 Visual Studio 中静态链接 FreeType2?

C++ boost : Get time with milliseconds