1

SSL をサポートする gSoap バイナリをビルドしようとしています。WIN32 openssl の最新の gSoap とバイナリを次の Web サイトからダウンロードしました: http://slproweb.com/products/Win32OpenSSL.html

gSoap のドキュメントによると、DWITH_OPENSSL オプションを有効にして標準の手順を使用してコンパイルする必要があります。最も自然なオプションは、minGW を使用することだと思いますが、このツールの経験はほとんどありません。これを試してみると (そしてこのパッチを適用した後、リンク時に 2 つのライブラリが不足しています: -lssl と -lcrypto.

-L オプションをコンパイル ディレクティブに追加する必要があると思いますが、openssl lib フォルダーに libssl または libcrypto (.a または .lib である必要がありますか?) が表示されません。これらも再コンパイルする必要がありますか、それとも何か不足していますか?

4

3 に答える 3

2

はい、私が知っているように、minGW最初のオフ インストールを使用opensslし、その後、次の例のようにパス + フラグを追加します。

gcc -I/include/
-I/local/include
-L/local/lib
     -o download_file download_file.c  -llibcurl -lcurl  

Cここで基本ファイルをコンパイルします。

./configureまたは、次のように add flagsを実行すると:

LDFLAGS+="-L/local/lib -lcurl"  LIBS+=-I/local/include ....
于 2013-04-11T17:49:08.380 に答える
2

もう少し「ネイティブ」な方法を使用することもできます。そのための Visual Studio C コンパイラ。ただし、これはあまり簡単ではありません。

まず、openssl をコンパイルします (VS 2015 Community Edition で有効ですが、どの 2015 でも実行できると思います)。

  • openssl ソースをダウンロードし、いくつかのフォルダーに解凍します
  • Windows 用の PERL をダウンロードして (ActivePerl または Straberry Perl - これは無料です)、インストールします。
  • メニュースタートから「Open Visual Studio 2015 Tools Command Prompt」を開く
  • cd から openssl の非圧縮ソース フォルダーへ

そこで次のコマンドを実行します (このセットはアセンブラーなしのバージョンを使用しています)。

perl Configure VC-WIN32 no-asm --prefix=c:\some\openssl\dir
ms\do_ms
nmake -f ms\ntdll.mak
nmake -f ms\ntdll.mak test - optional step
nmake -f ms\ntdll.mak install

その後、openssl 製品を c:\some\openssl\dir にインストールします。

次に、SSL をサポートする gSoap ベースのアプリケーションをコンパイルするには、次の設定を追加する必要があります (すべての設定は Visual Studio の [プロジェクト] -> [プロパティ] から行います)。

  • C/C++ --> 一般、追加のインクルード ディレクトリで、「c:\some\openssl\dir\include」フォルダをリストに追加します
  • C/C++ --> コマンド ラインの [追加オプション] ボックスに、次のように入力します。 /DWITH_OPENSSL
  • リンカー --> 入力、追加の依存関係: 「c:\some\openssl\dir\lib\libeay32.lib」と「c:\some\openssl\dir\lib\sskeay32.lib」をリストに追加

wsdl2h.exe および soapcpp2.exe ツールを使用してクラスを生成した場合は、ほぼ完了です。stdsoap2.cpp ファイルに次の行があることを確認します。

#include <openssl\ssl.h>
#include <openssl\rsa.h>

そうでない場合は、最初の #ifdef WITH_OPENSSL の直後に追加できます

私のプロジェクトは以上でした。VC2015 でコンパイルし、他のアプリと同じように実行/デバッグできました。

幸運を。

于 2016-01-08T14:06:03.223 に答える
2

わかりました、ようやく作成しました。使用したさまざまな手順は次のとおりです。

  1. まず、スタティック ライブラリがShining Light Productionによって出荷されたバイナリに同梱されていないため、mingw で openssl を再構築する必要がありました。openssl フォルダーを c:/openssl/ に配置します。

  2. 次に、stdsoap2.h の 2247 行を次のように変更しました。

    #if defined(WIN32) && !defined(__MINGW32__)
    #define soap_strtoll _strtoi64
    #else
    # define soap_strtoll strtoll
    #endif
    
    #if defined(WIN32) && !defined(__MINGW32__)    
    # define soap_strtoull _strtoui64
    #else
    # define soap_strtoull strtoull
    #endif
    
  3. 構成ファイルで:

    • -DWITH_GZIP と -lz をすべて削除しました。
    • -lws2_32 リンカー オプションを追加しました (winsocket のサポートだと思います)。configure ファイルのこれらの変更は 7338-7347 行にあります。

      WSDL2H_EXTRA_FLAGS="-DWITH_GNUTLS"
      WSDL2H_EXTRA_LIBS="-lgnutls -lgcrypt -lgpg-error"
      SAMPLE_SSL_LIBS="-lgnutls -lgcrypt -lgpg-error"
      WSDL2H_SOAP_CPP_LIB="libgsoapssl++.a"
      else
      { echo "$as_me:$LINENO: result: no" >&5
      echo "${ECHO_T}no" >&6; }
      WSDL2H_EXTRA_FLAGS="-DWITH_OPENSSL"
      WSDL2H_EXTRA_LIBS="-lssl -lcrypto -lws2_32"
      SAMPLE_SSL_LIBS="-lssl -lcrypto -lws2_32"
      
  4. 適切な LDFLAGS と CXXFLAGS を追加して mingw で configure を実行しました。

    LDFLAGS+=" -L/c/openssl/ -L/c/MinGW/lib/" CXXFLAGS+=" -I/c/openssl/include/" ./configure
    
  5. 私はmakeを実行して指を交差させました!
于 2013-04-12T07:53:54.603 に答える