WINDOWS上的OpenSSL!!-ld.exe找不到-lcrypto/-leay32
我正在尝试在(64位)Windows7上使用OpenSSL构建一个C文件。我已经从官方OpenSSL站点下载了最新的完整二进制文件,并且正在使用MinGW,并且已经将相应的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
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错误