LibTomCrypt ソース全体を使用して、問題なくコンパイルされる Visual Studio 2010 でライブラリ ファイルを作成しました。ただし、TomCrypt ライブラリとリンクする単純なテスト コンソール アプリケーションを作成すると、次のコードのリンカ エラーが発生します。
テストコード:
#include <stdio.h>
#include <tomcrypt.h>
int main()
{
int Cipher;
register_cipher( &aes_desc );
Cipher = find_cipher( "aes" );
if( Cipher != CRYPT_OK )
return 0;
printf( "Cipher name: %s\n", cipher_descriptor[ Cipher ].name );
unregister_cipher( &aes_desc );
return 0;
}
リンカ エラー:
error LNK1120: 1 unresolved externals
error LNK2001: unresolved external symbol _aes_desc
興味深いことに、デバッグライブラリのビルドはテスト コードと完全に連携します。一部のシンボルが欠落しているように見えるのは、 tomcrypt.libのリリースビルドです。
今、私はライブラリファイルを構築して使用するのは初めてではありませんが、ライブラリをリリースモードで構築し、テストプログラムで正しくリンクさせるためにできる特定のコンパイラフラグまたは予防措置はあるのでしょうか? LibTomCrypt コードで定義されている静的な aes_desc 構造体が、コンパイラの最適化によってライブラリのリリース ビルドから欠落している可能性はありますか?
誰かが私自身とこの問題を経験している他の誰かに洞察を提供できることを願っています.