web-dev-qa-db-ja.com

Visual StudioでOpenSSLを使用する方法

Cで記述されたコンソールアプリケーションをVisual Studio 2010に移植しようとしています。Linux/ Macでは、OpenSSLサポートを含め、アプリケーションは完全に実行されます。

Visual StudioプロジェクトでOpenSSLライブラリの使用/リンクに関するヘルプを提供できる人はいますか?

ありがとう!

33
user435739

私はそれが古いことを知っています!私は自分で問題に直面しました、そして、ここに解決策があります。

まず、opensslをインストールする必要があります(通常の通常のインストール)。 (それは here からです)。

さて、プロジェクトを作成した後、私は引用します:

プロジェクトプロパティページで次の設定が設定されていることを確認します。

[C/C++->一般->追加インクルードディレクトリ]値:マシンのOpenSSLのインクルードディレクトリ(C:\ openssl\includeなど)

[リンカー->一般->追加のライブラリディレクトリ]値:マシンのOpenSSLのlibディレクトリ(例:C:\ openssl\lib)

[リンカー->入力->追加の依存関係]値:libeay32.lib

ソース

34
joker

OpenSSL関連のヘッダーファイル、およびヘッダーの下に追加します。

#include <winsock2.h>
#include <windows.h>

以下を開き、プリコンパイル済みファイルをリンクしてダウンロードします。

http://www.npcglib.org/~stathis/blog/precompiled-openssl/

cドライブのフォルダーを抽出して保持するには、手順についてreadme_precompile.txtを使用します。

Visual C++プロジェクトを開き、以下に示すフォローアップ手順を追加して、リンカーオプションを含めます。

プロジェクトプロパティページで次の設定が設定されていることを確認します。

  • [C/C++->一般->追加のインクルードディレクトリ]
    • マシンのOpenSSLのincludeディレクトリ(例:C:\ openssl\include)または(例:C:\ openssl\include64)
  • [リンカー->一般->追加のライブラリディレクトリ]
    • マシンのOpenSSLのlibディレクトリ(例:C:\ openssl\lib)または(例:C:\ openssl\lib64)
  • [リンカー->入力->追加の依存関係]
    • ws2_32.lib
    • libsslMT.lib
    • Crypt32.lib
    • libcryptoMT.lib
8
Nagaraj Gaonkar

まあ、これは1年以上前ですが、答えが見つからなかったので、徹底的に調べました。 VS 11を使用してコンパイルするには、openssl-1.0.1eを入手しました。

Gitに付属のPerlを使用してみましたが、動作しませんでした。インストールする必要がありました ActivePerl

Niteshが提供する link から取得:

Perl Configure VC-WIN64A no-asm

に続く:

ms\do_win64a

この投稿 ごとに、ms\ntdll.makを編集し、CCを次のように変更しました。

CC="c:\Program Files (x86)\Microsoft visual Studio 11.0\VC\bin\AMD64\cl.exe"

そして最後に:

nmake -f ms\ntdll.mak

私はインストールを気にせず、ディレクトリopenssl-1.0.1e\out32dllを構成プロパティ->リンカー->追加のライブラリディレクトリに追加し、openssl-1.0.1e\inc32を構成プロパティ-> C/C++-> C/C++に追加しました。 ->一般->追加のインクルードディレクトリ、libeay32.dllを私のパスのどこかにコピーし、それを適切と呼びました。動作しているようです。

4
user2460683

ここにいくつかのリソースがあります: OpenSSL for Windowsのコンパイルとインストール 、および OpenSSLの暗号化の使用(Blowfish、DES 、RC2、RC4)

自分で試してみましたが、まだエラーが発生しています。 OpenSSLとVisual Studioは私の得意ではありませんが、おそらくあなたはそれを理解することができます。

3
Nitesh