Openssl в выпуске Windows - PullRequest
       0

Openssl в выпуске Windows

4 голосов
/ 01 декабря 2011

Пока я пытаюсь создать lib файлы для windows. Пришла следующая ошибка.Пожалуйста, помогите в этом вопросе.

КОД Объяснение

Эта строка, которую я фактически набрал в командной строке Visual Studio. Это создаст файлы obj и dll для OpenSSL.

   X:\dev\openssl>nmake -f ms\ntdll.mak

Запускается выполнение make-файлов для получения файлов lib и obj.

   Microsoft (R) Program Maintenance Utility Version 8.00.50727.762
   Copyright (C) Microsoft Corporation. All rights reserved.

   Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.762 for 80x86

   Copyright (C) Microsoft Corporation. All rights reserved.

   Building OpenSSL
    cl /Fotmp32dll\err_all.obj -Iinc32 -Itmp32dll /MD /Ox /O2 /Ob2 -O -  DOPENSSL_USE_APPLINK -I. -DOPENSSL_NO_RC5 -DOPENSSL_NO_MD2 -DOPENSSL_NO_KRB5 -DOPENSSL_NO_JPAKE -DOPENSSL_NO_STATIC_ENGINE /I "C:\Program Files\Microsoft    SDKs\Windows\v6.0\Include" /I "C:\Program Files\Microsoft SDKs\Windows\v6.0\VC\INCLUDE" /Zi   /Fdtmp32dll/lib -D_WINDLL -DOPENSSL_BUILD_SHLIBCRYPTO -c .\crypto\err\err_all.c

Ошибка выдает только этот файл. Когда он пытается включить этот файл ocsp.h.

    err_all.c
    X:\dev\openssl\inc32\openssl/ocsp.h(157) : error C2059: syntax error : 'type'
    X:\dev\openssl\inc32\openssl/ocsp.h(206) : error C2016: C requires that a struct or union has at least one member
    X:\dev\openssl\inc32\openssl/ocsp.h(206) : error C2059: syntax error : '('
     X:\dev\openssl\inc32\openssl/ocsp.h(208) : error C2059: syntax error : '}'
    X:\dev\openssl\inc32\openssl/ocsp.h(209) : error C2059: syntax error : '}'
     X:\dev\openssl\inc32\openssl/ocsp.h(350) : error C2016: C requires that a struct or union has at least one member
    X:\dev\openssl\inc32\openssl/ocsp.h(350) : error C2059: syntax error : '('
    X:\dev\openssl\inc32\openssl/ocsp.h(352) : error C2059: syntax error : '}'
    X:\dev\openssl\inc32\openssl/ocsp.h(404) : error C2059: syntax error : 'type'
    X:\dev\openssl\inc32\openssl/ocsp.h(405) : error C2059: syntax error : ','
       X:\dev\openssl\inc32\openssl/ocsp.h(405) : error C2143: syntax error : missing     ')' before '('
    X:\dev\openssl\inc32\openssl/ocsp.h(405) : error C2143: syntax error : missing ')' before '('
    X:\dev\openssl\inc32\openssl/ocsp.h(405) : error C2091: function returns function
     X:\dev\openssl\inc32\openssl/ocsp.h(405) : error C2091: function returns function
     X:\dev\openssl\inc32\openssl/ocsp.h(405) : error C2143: syntax error : missing '{'        before 'constant'
     X:\dev\openssl\inc32\openssl/ocsp.h(405) : error C2059: syntax error : '<Unknown>'
    X:\dev\openssl\inc32\openssl/ocsp.h(405) : error C2059: syntax error : ')'
      X:\dev\openssl\inc32\openssl/ocsp.h(406) : error C2059: syntax error : ')'
    X:\dev\openssl\inc32\openssl/ocsp.h(407) : error C2143: syntax error : missing ')'         before '('
        X:\dev\openssl\inc32\openssl/ocsp.h(407) : error C2143: syntax error : missing ')' before '('
    X:\dev\openssl\inc32\openssl/ocsp.h(407) : error C2091: function returns function
    X:\dev\openssl\inc32\openssl/ocsp.h(407) : error C2091: function returns function
    X:\dev\openssl\inc32\openssl/ocsp.h(407) : error C2143: syntax error : missing '{' before 'constant'
    X:\dev\openssl\inc32\openssl/ocsp.h(407) : error C2059: syntax error : '<Unknown>'
      X:\dev\openssl\inc32\openssl/ocsp.h(407) : error C2059: syntax error : ')'
    X:\dev\openssl\inc32\openssl/ocsp.h(407) : error C2059: syntax error : ')'
   X:\dev\openssl\inc32\openssl/ocsp.h(409) : error C2059: syntax error : ','
   X:\dev\openssl\inc32\openssl/ocsp.h(409) : error C2143: syntax error : missing ')' before '('
   X:\dev\openssl\inc32\openssl/ocsp.h(409) : error C2143: syntax error : missing ')' before '('
   X:\dev\openssl\inc32\openssl/ocsp.h(409) : error C2091: function returns function
    X:\dev\openssl\inc32\openssl/ocsp.h(409) : error C2091: function returns function
      X:\dev\openssl\inc32\openssl/ocsp.h(409) : error C2143: syntax error : missing   '{' before 'constant'
     X:\dev\openssl\inc32\openssl/ocsp.h(409) : error C2059: syntax error : '<Unknown>'
  X:\dev\openssl\inc32\openssl/ocsp.h(409) : error C2059: syntax error : ')'
  X:\dev\openssl\inc32\openssl/ocsp.h(409) : error C2059: syntax error : ')'
   X:\dev\openssl\inc32\openssl/ocsp.h(416) : error C2059: syntax error : ','
  X:\dev\openssl\inc32\openssl/ocsp.h(416) : error C2143: syntax error : missing ')' before '('
    X:\dev\openssl\inc32\openssl/ocsp.h(416) : error C2143: syntax error : missing ')' before '('
    X:\dev\openssl\inc32\openssl/ocsp.h(416) : error C2091: function returns function
   X:\dev\openssl\inc32\openssl/ocsp.h(416) : error C2091: function returns function
        X:\dev\openssl\inc32\openssl/ocsp.h(416) : error C2143: syntax error : missing '{' before 'constant'
   X:\dev\openssl\inc32\openssl/ocsp.h(416) : error C2059: syntax error : '<Unknown>'
  X:\dev\openssl\inc32\openssl/ocsp.h(416) : error C2059: syntax error : ')'
   X:\dev\openssl\inc32\openssl/ocsp.h(418) : error C2059: syntax error : ')'
     X:\dev\openssl\inc32\openssl/ocsp.h(420) : error C2143: syntax error : missing ')' before '('
   X:\dev\openssl\inc32\openssl/ocsp.h(420) : error C2143: syntax error : missing ')' before '('
   X:\dev\openssl\inc32\openssl/ocsp.h(420) : error C2091: function returns function
 X:\dev\openssl\inc32\openssl/ocsp.h(420) : error C2091: function returns function

  X:\dev\openssl\inc32\openssl/ocsp.h(425) : error C2143: syntax error : missing ')'         before '('
   X:\dev\openssl\inc32\openssl/ocsp.h(425) : error C2143: syntax error : missing ')' before '('
  X:\dev\ openssl\inc32\openssl/ocsp.h(425) : error C2091: function returns function
    X:\dev\openssl\inc32\openssl/ocsp.h(425) : error C2091: function returns function
    X:\dev\openssl\inc32\openssl/ocsp.h(425) : error C2143: syntax error : missing '{' before 'constant'
    X:\dev\openssl\inc32\openssl/ocsp.h(425) : error C2059: syntax error : '<Unknown>'
   X:\dev\openssl\inc32\openssl/ocsp.h(425) : error C2059: syntax error : ')'
     X:\dev\openssl\inc32\openssl/ocsp.h(425) : error C2059: syntax error : ')'
   X:\dev\openssl\inc32\openssl/ocsp.h(427) : error C2143: syntax error : missing ')' before '('
     X:\dev\openssl\inc32\openssl/ocsp.h(427) : error C2143: syntax error : missing ')'  before '('
     X:\dev\openssl\inc32\openssl/ocsp.h(427) : error C2091: function returns function
     X:\dev\openssl\inc32\openssl/ocsp.h(427) : error C2091: function returns function
       X:\dev\openssl\inc32\openssl/ocsp.h(427) : error C2143: syntax error : missing '{' before 'constant'
      X:\dev\openssl\inc32\openssl/ocsp.h(427) : error C2059: syntax error : '<Unknown>'
     X:\dev\openssl\inc32\openssl/ocsp.h(427) : error C2059: syntax error : ')'
     X:\dev\openssl\inc32\openssl/ocsp.h(428) : error C2143: syntax error : missing ')' before '('
    X:\dev\openssl\inc32\openssl/ocsp.h(428) : error C2143: syntax error : missing ')' before '('
   X:\dev\openssl\inc32\openssl/ocsp.h(428) : error C2091: function returns function
  X:\dev\openssl\inc32\openssl/ocsp.h(428) : error C2091: function returns function
  X:\dev \openssl\inc32\openssl/ocsp.h(428) : error C2143: syntax error : missing '{' before 'constant'
     X:\dev\openssl\inc32\openssl/ocsp.h(428) : error C2059: syntax error : '<Unknown>'
      X:\dev\openssl\inc32\openssl/ocsp.h(428) : error C2059: syntax error : ')'
        X:\dev\openssl\inc32\openssl/ocsp.h(428) : error C2059: syntax error : ')'
      X:\dev\openssl\inc32\openssl/ocsp.h(430) : error C2143: syntax error : missing   ')' before '('
    X:\dev\openssl\inc32\openssl/ocsp.h(430) : error C2143: syntax error : missing ')' before '('

   X:\dev\openssl\inc32\openssl/ocsp.h(430) : error C2059: syntax error : '<Unknown>'
  X:\dev\ openssl\inc32\openssl/ocsp.h(430) : error C2059: syntax error : ')'
      X:\dev \openssl\inc32\openssl/ocsp.h(435) : error C2059: syntax error : ')'
     X:\dev\openssl\inc32\openssl/ocsp.h(437) : error C2143: syntax error : missing ')'  before '('

Компиляция останавливается здесь:

     X:\dev\openssl\inc32\openssl/ocsp.h(437) : fatal error C1003: error count exceeds  100; stopping compilation
     cl : Command line warning D9035 : option 'O' has been deprecated and will be rem
    oved in a future release
    NMAKE : fatal error U1077: '"C:\Program Files\Microsoft SDKs\Windows\v6.0\VC\Bin
    \cl.EXE"' : return code '0x2'
   Stop.

Ответы [ 3 ]

4 голосов
/ 14 октября 2013

С такой же проблемой боролись с кросс-компиляцией MinGW в Linux.

Глядя на предварительно обработанный источник, проблемы очевидны:

typedef struct ocsp_request_st
 {
 OCSP_REQINFO *tbsRequest;
 OCSP_SIGNATURE *optionalSignature;
 } ((LPCSTR) 66)

struct ocsp_responder_id_st
 {
 int type;
 union {
  ((LPCSTR) 7)* byName;
         ASN1_OCTET_STRING *byKey;
  } value;
 };

Каким-то образом OPENSSL_SYS_WIN32 определенный #undef блок в crypto / ossl_typ.h , кажется, не имеет никакого эффекта.

Явное добавление

#undef OCSP_REQUEST
#undef X509_NAME
#undef OCSP_RESPONSE

до

#include <openssl/ocsp.h>

in crypto / err / err_all.c исправляет это.

К сожалению, потом я столкнулся с еще одной проблемой ...

1 голос
/ 13 ноября 2012

Это вызовы командной строки, которые я выполняю для создания статических библиотек OpenSSL в MSVS.Я предполагаю, что они должны работать так же, как и файл make, который вы вызываете.

call "%VS90COMNTOOLS%\vsvars32.bat"
perl Configure VC-WIN32
call ms\do_nasm
nmake -f ms\nt.mak clean
nmake -f ms\nt.mak

Вы можете найти NASM здесь: www.nasm.us

0 голосов
/ 07 апреля 2013

Сначала я получил ту же ошибку.Может быть, это потому, что я не начал правильно с первого раза?Поэтому я просто удалил всю рабочую папку openssl-1.0.1e Извлек свежий файл tar из папки

Запустил командную строку Visual Studio 2012 от имени администратора (командная строка родных инструментов VS2012 x86 ... RunAs Administrator) Добавлен perlи nasm к пути perl. Настройка VC-WIN32 --prefix = c: \ openssl call ms \ do_nasm nmake -f ms \ nt.mak

все в порядке ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...