gpt4 book ai didi

c - Windows 问题中的 Openssl

转载 作者:太空狗 更新时间:2023-10-29 15:30:19 25 4
gpt4 key购买 nike

当我尝试为 windows 创建 lib 文件时,出现了以下错误。请帮助解决这个问题。

代码解释

这一行实际上是我在 visual studio 命令提示符下输入的。这将为 OpenSSL 创建 obj 和 dll 文件。

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

它开始执行make files来获取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.

最佳答案

一直在用 Linux 上的 MinGW 交叉编译解决同样的问题。

查看预处理后的源代码,问题很明显:

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;
};

crypto/ossl_typ.h 中的 OPENSSL_SYS_WIN32 特定 #undef block 似乎没有任何效果。

显式添加

#undef OCSP_REQUEST
#undef X509_NAME
#undef OCSP_RESPONSE

之前

#include <openssl/ocsp.h>

crypto/err/err_all.c 中修复它。

不幸的是我后来遇到了另一个问题......

关于c - Windows 问题中的 Openssl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8339426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com