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

标签 c windows cryptography openssl

<分区>

我正在尝试在(64 位)Windows 7 上使用 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.dllcryptolib.dll 的文件,所以我尝试使用提供的安装说明从源代码构建我自己的 OpenSSL,因为我可以看到 cryptossl 的静态库似乎没有随 Windows 安装一起提供。我在其他帖子中看到了对其他几个库的引用,libeay32ssleay32,但它们返回相同的错误。

如果我删除 -lcrypto(或其他)然后我得到 Undefined reference 错误:

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 不存在,我会建议您尝试从任何其他系统复制它。我有类似的问题,幸运的是在另一个系统上发现了它并且复制也很有效。

问候, 耆那教

关于c - WINDOWS 上的 OpenSSL!! - ld.exe 找不到 -lcrypto/-leay32,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19380381/

相关文章:

CMakeLists.txt 如何包含条件预处理器

c - sprintf 数组中指针的可变数量

windows - Go 编译器可以安装在 Windows 上吗?

windows - 使用 glfw-rs 时 gcc.exe 找不到 -lglfw3

java - 为什么我们需要 Hadoop KMS?

c - 修改printf

c++ - C++ 中的控制台暂停?

ios - 如何在 IOS 中通过预定义的短语和盐值生成散列键?

java - 在 Java/Kotlin 中生成 ed25519 key

c - 如何创建由 256 字节组成的大小为 2^16 block 的数组