WINDOWS上的OpenSSL!!-ld.exe找不到-lcrypto/-leay32

WINDOWS上的OpenSSL!!-ld.exe找不到-lcrypto/-leay32,c,windows,cryptography,openssl,C,Windows,Cryptography,Openssl,我正在尝试在(64位)Windows7上使用OpenSSL构建一个C文件。我已经从官方OpenSSL站点下载了最新的完整二进制文件,并且正在使用MinGW,并且已经将相应的bin目录添加到PATH。但是,我得到以下错误: c:\Workspace\OSAccess\c>gcc -I%JAVA_HOME%\include -I%JAVA_HOME%\include\win32 -Ic:\OpenSSL-Win64\include -std=c99 -lm -lcrypto -o libosa

我正在尝试在(64位)Windows7上使用OpenSSL构建一个C文件。我已经从官方OpenSSL站点下载了最新的完整二进制文件,并且正在使用MinGW,并且已经将相应的
bin
目录添加到
PATH
。但是,我得到以下错误:

c:\Workspace\OSAccess\c>gcc -I%JAVA_HOME%\include -I%JAVA_HOME%\include\win32 -Ic:\OpenSSL-Win64\include -std=c99 -lm -lcrypto -o libosaccess.dll osaccess.c
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: cannot find -lcrypto
collect2.exe: error: ld returned 1 exit status
我找不到任何名为
libcrypto.dll
cryptolib.dll
的文件,因此我尝试使用提供的安装说明从源代码构建自己的OpenSSL,因为我可以看到
crypto
ssl
的静态库似乎没有随Windows安装一起提供。我在其他帖子中看到了对其他几个库的引用,
libeay32
ssleay32
,但它们返回相同的错误

如果我删除了
-lcrypto
(或其他),那么我会得到
未定义的引用
错误:

c:\Workspace\OSAccess\c>gcc -I%java_home%\include -I%java_home%\include\win32 -Ic:\OpenSSL-Win64\include -std=c99 -lm -o libosaccess.dll osaccess.c
C:\Users\xxxx\AppData\Local\Temp\ccbi3e1T.o:osaccess.c:(.text+0x383): undefined reference to 'Netbios@4'
C:\Users\xxxx\AppData\Local\Temp\ccbi3e1T.o:osaccess.c:(.text+0x3d1): undefined reference to 'Netbios@4'
C:\Users\xxxx\AppData\Local\Temp\ccbi3e1T.o:osaccess.c:(.text+0x445): undefined reference to 'Netbios@4'
C:\Users\xxxx\AppData\Local\Temp\ccbi3e1T.o:osaccess.c:(.text+0x73d): undefined reference to 'EVP_CIPHER_CTX_init'
C:\Users\xxxx\AppData\Local\Temp\ccbi3e1T.o:osaccess.c:(.text+0x742): undefined reference to 'EVP_aes_256_cbc'
C:\Users\xxxx\AppData\Local\Temp\ccbi3e1T.o:osaccess.c:(.text+0x76a): undefined reference to 'EVP_EncryptInit_ex'
C:\Users\xxxx\AppData\Local\Temp\ccbi3e1T.o:osaccess.c:(.text+0x794): undefined reference to 'EVP_EncryptUpdate'
C:\Users\xxxx\AppData\Local\Temp\ccbi3e1T.o:osaccess.c:(.text+0x7d2): undefined reference to 'EVP_EncryptFinal_ex'
C:\Users\xxxx\AppData\Local\Temp\ccbi3e1T.o:osaccess.c:(.text+0x81c): undefined reference to 'EVP_CIPHER_CTX_cleanup'
C:\Users\xxxx\AppData\Local\Temp\ccbi3e1T.o:osaccess.c:(.text+0x865): undefined reference to 'EVP_CIPHER_CTX_init'
C:\Users\xxxx\AppData\Local\Temp\ccbi3e1T.o:osaccess.c:(.text+0x86a): undefined reference to 'EVP_aes_256_cbc'
C:\Users\xxxx\AppData\Local\Temp\ccbi3e1T.o:osaccess.c:(.text+0x892): undefined reference to 'EVP_DecryptInit_ex'
C:\Users\xxxx\AppData\Local\Temp\ccbi3e1T.o:osaccess.c:(.text+0x8bc): undefined reference to 'EVP_DecryptUpdate'
C:\Users\xxxx\AppData\Local\Temp\ccbi3e1T.o:osaccess.c:(.text+0x8fa): undefined reference to 'EVP_DecryptFinal_ex'
C:\Users\xxxx\AppData\Local\Temp\ccbi3e1T.o:osaccess.c:(.text+0x930): undefined reference to 'EVP_CIPHER_CTX_cleanup'

如果libcrypto.dll或cryptolib.dll不存在,我建议您尝试从任何其他系统复制它。我也有类似的问题,幸运的是在另一个系统上发现了它,而且复制也很好

问候,,
Jain

看看添加
-Lc:\OpenSSL-Win64-leay32
是解决这个问题的方法。。。。和
-Lc:\Windows\System32-lnetapi32
用于Netbios错误