私はこの問題がかなり一般的であることを知っています。実際、この問題についてよく検索しましたが、自分のケースに合った解決策が見つかりません。openssl ライブラリを使用する C++ Visual Studio 2012 プロジェクトで作業しています。これは最小限のサンプル コードです。
#include <iostream>
#include <stdio.h>
//OpenSSL
#include <openssl/bio.h>
#include <openssl/ssl.h>
#include <openssl/err.h>
#include <openssl/x509.h>
using namespace std;
int main(){
SSL_library_init ();
return 0;
}
Windows7-64b マシンで Visual Studio 2012 Professional を実行しています。ここからWin64 OpenSSL v1.0.1e Light インストーラーをダウンロードして インストールしました。次に、[プロジェクト プロパティ] -> [構成プロパティ] -> [C/C++] -> [全般] -> [追加のインクルード ディレクトリ] にパス "C:\OpenSSL-Win64\include" を追加しました。そのため、現時点では、サンプル コードは Visual Studio でコンパイル エラーを表示していません。次に、リンカー - >追加のライブラリディレクトリ、パス「C:\OpenSSL-Win64\lib」にも追加し、リンカー- >追加の依存関係に「libeay32.lib;」を追加しました。および「ssleay32.lib」。ただし、コンパイルしようとすると、次のエラーが発生しました。
1>------ Build started: Project: Client, Configuration: Debug Win32 ------
1> Client.cpp
1>Client.obj : error LNK2019: unresolved external symbol _SSL_library_init referenced in function _main
1>c:\users\gabi\documents\visual studio 2012\Projects\Project1\Debug\Client.exe : fatal error LNK1120: 1 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
SSL_init_function() が「libeay32.lib」または「ssleay32.lib」に属していない可能性があるため、残りの OpenSSL ライブラリも試しました。だから私はソースコードに追加しました:
#pragma comment(lib, "libeay32.lib")
#pragma comment(lib, "ssleay32.lib")
#pragma comment(lib, "VC\\libeay32MD.lib")
#pragma comment(lib, "VC\\libeay32MDd.lib")
#pragma comment(lib, "VC\\libeay32MT.lib")
#pragma comment(lib, "VC\\libeay32MTd.lib")
#pragma comment(lib, "VC\\ssleay32MD.lib")
#pragma comment(lib, "VC\\ssleay32MDd.lib")
#pragma comment(lib, "VC\\ssleay32MT.lib")
#pragma comment(lib, "VC\\ssleay32MTd.lib")
これらは、サブフォルダー「VC\static」にあるものを除くすべてのライブラリです。これは、静的フォルダー内のファイルがそれらの一部と同じ名前を持ち、競合する可能性があるためです。とにかく、エラーは同じです。ああ、文字列「C:\OpenSSL-Win64\bin」も PATH 環境変数に追加しました。そして...私もインストールしたWin32 OpenSSLにリンクし、このチュートリアルに従って独自の「libeay32.lib」と「ssleay32.lib」をコンパイルしてみました。32b または 64b の両方が機能しませんでした。私はこれにかなり必死です、誰か助けてもらえますか?ありがとう!