gpt4 book ai didi

c++ - 为 Crypto++ 构建和链接测试代码

转载 作者:行者123 更新时间:2023-11-28 07:50:38 25 4
gpt4 key购买 nike

我正在尝试为项目的 Crypto++ 库编写一些简单的测试代码。不过,我还没有设法获得自己的代码来构建。它编译得很好,问题出在链接上。我对 Visual Studios 还是很陌生,但我使用的是 VS10。我得到的错误是:

1>sec_test.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall CryptoPP::DES::Base::ProcessAndXorBlock(unsigned char const *,unsigned char const *,unsigned char *)const " (?ProcessAndXorBlock@Base@DES@CryptoPP@@UBEXPBE0PAE@Z)
1>sec_test.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall CryptoPP::DES::Base::UncheckedSetKey(unsigned char const *,unsigned int,class CryptoPP::NameValuePairs const &)" (?UncheckedSetKey@Base@DES@CryptoPP@@UAEXPBEIABVNameValuePairs@3@@Z)

我已经尝试了所有我能在文档中找到的关于链接的内容。我以前从未链接过 DLL,但这些是我尝试链接时遇到的错误。如果我尝试做我认为链接到静态库版本的事情,我会得到更多。

我应该注意,目前我正在尝试测试纯 DES。特别是,为了安全起见,这里是我正在进行的 API 调用:

DES::Encryption  DES_encrypt;
DES_encrypt.SetKey(key, 64);
DES_encrypt.ProcessAndXorBlock(plaintext, NULL, ciphertext);

DES::Decryption DES_decrypt;
DES_decrypt.SetKey(key, 64);
DES_decrypt.ProcessAndXorBlock(ciphertext, NULL, decrypted);

如果有人能提供帮助,或为我指明正确的方向,我将不胜感激。

最佳答案

首先要检查您的项目属性(右键单击项目,单击Properties)。

需要在 Linker->Input->Additional Dependencies 字段中指定外部库,可以通过绝对路径或结合其他 VS 路径属性。

您可以查看 Linker->Command Line 并检查您想要的 .lib 文件是否确实被传递给了链接器。

另一种方法是关闭 Linker->General 选项中的 Suppress Startup Banner 选项,然后检查构建输出以确保它包含您想要的内容想要。

如果您知道您想要的库正在链接,另一个有用的技巧是检查 strings 命令(在 linux 或 cygwin 中)或 dumpbin/HEADERS 在 VS 命令提示符中。您可以查看这些命令的输出以查找符号 VS claims is missing 以验证它是否确实在 .lib 文件中定义。有时较大的软件包有多个 .lib 文件,因此这有助于确保您链接的是具有所需符号的文件。

关于c++ - 为 Crypto++ 构建和链接测试代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13872129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com