0

プロジェクトのCrypto++ライブラリ用の簡単なテストコードを作成しようとしています。しかし、私はまだ自分のコードをビルドすることができていません。それはうまくコンパイルされます、問題はリンクにあります。Visual Studioはまだかなり新しいですが、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);

誰かが助けてくれるか、私を正しい方向に向けることができれば、私は大いに義務づけられるでしょう。

4

1 に答える 1

1

最初に確認するのは、プロジェクトのプロパティです(プロジェクトを右クリックして、をクリックしますProperties)。

Linker->Input->Additional Dependencies外部ライブラリは、絶対パスまたは他のVSパスプロパティと組み合わせて、フィールドで指定する必要があります。

Linker->Command Line調べて、必要な.libファイルが実際にリンカーに渡されていることを確認できます。

Suppress Startup Banner別の方法は、オプションのオプションをオフにしてからLinker->General、ビルド出力をチェックして、必要なものが含まれていることを確認することです。

必要なライブラリがリンクされていることがわかっている場合、別の便利なトリックは、stringsコマンドの出力(linuxまたはcygwindumpbin /HEADERSの場合)またはVSコマンドプロンプトを確認することです。これらのコマンドの出力を調べて、VSが欠落していると主張するシンボルを探し、それが実際に.libファイルで定義されていることを確認できます。より大きなソフトウェアパッケージには複数の.libファイルが含まれている場合があるため、これは、必要なシンボルを持つものをリンクしていることを確認するのに役立ちます。

于 2012-12-14T12:18:18.717 に答える