2011-12-22 20 views
1

このプロジェクトを開始する前に、私はVisual Studio 2010のコーディングと使用に慣れていたという誤った印象を受けました。私のMS Visual StudioプロジェクトをOpenSSL静的ライブラリとリンクさせるにはどうすればいいですか?

私のプラットフォームは64ビットWindows 7ですが、私は64ビットと32ビットの両方のプラットフォーム用にビルドする必要があります。私はVS 2010とOpenSSL 1.0.0eを使用していますが、必要に応じて別のものを使用できます。私は他の開発者によって大きなプロジェクトに含まれる静的ライブラリ(* .lib)を作成しようとしています。 * .libはコンパイルされているようですが、明らかにテストプログラムが破損してからすべてがうまくいくわけではありません。

私のプログラムで* .dllsを使用することはできません。これは高いから来ています。したがって、ライブラリをlibeay32.libとssleay32.libに静的にリンクしようとしています。私はまだ始まったばかりと何か新しいものを使用した場合、低速開始したいので、私はSSLから呼び出すしようとしている唯一の二つの機能は、HMACとEVP_sha512ありました:私は、私はそれをやってすることができる認める

HMAC(EVP_sha512(), key, keyLen, lpBufferAddr, dwCurBufSize, hashOut, &len);

全く間違っていますが、そこにはあなたがいます。正直、必要なのは暗号機能とHMAC機能だけです。私はおそらく何か他のものを使うことができますが、私はOpenSSLを使うように言われました。とにかく、私のライブラリプロジェクト(2つのOpenSSLライブラリへの順番にリンク)にリンクするテストプログラムを構築するとき、私は、次のリンクエラーが出る....

を上に移動:

error LINK2019: unresolved external symbol [email protected] referenced in function "public: int _thiscall etc" 
error LINK2019: unresolved external symbol [email protected] referenced in function "public: int _thiscall etc" 

私は両方のライブラリを「追加の依存関係」に含め、それらのディレクトリを「追加のライブラリの依存関係」に含めました。

誰もがこれを手伝ってくれますか?私はこれを注いできたので、私はダンスだという不運な結論に至った。 OpenSSLから静的ライブラリを作成することは私にとっては難しかったと私は認めており、x64で成功したとは確信していません。どんな助けやアドバイスも大歓迎です。

答えて

0

OpenSSLはCベースのライブラリで、/ Gdオプションでコンパイルされます。すべての関数は、__cdecl呼び出し規約を使用しています。

使用している関数の前に__cdeclを追加します。 (ライブラリがこのオプションでコンパイルされているので、__cdeclを追加した後にライブラリを再コンパイルする必要はありません)。

SSL_connectを使用している場合

int __cdecl SSL_connect(SSL * ssl); 

私はあなたの問題を解決すると思います。

ほとんどの場合、extern "C"で関数宣言をラップする必要があります。しかし、私が知る限り、この場合、あなたはこれを行う必要はありません。

関連する問題