Win32下编译OpenSSL成功后,使用静态lib,出现6个 LNK2001: unresolved external symbol ??

CCDDzclxy 2013-07-09 09:11:35
RT
我这里是要使用 OpenSSL 的 静态 ssleay32.lib和libeay32.lib 。

下载了 OpenSSL的源码,使用下面的命令编译:(使用的是 VC6 的nmake)

perl Configure VC-WIN32
ms\do_ms.bat
nmake -f ms\nt.mak

在OpenSSL的 out32 文件夹下有 ssleay32.lib和libeay32.lib 出现,
再运行“nmake -f ms\nt.mak test” 也有 “passed all tests”被打印出来,说明编译都是成功的。

然后一段测试代码:

#include <stdio.h>

#include "openssl/ssl.h"

#pragma comment(lib, "libeay32.lib")
#pragma comment(lib, "ssleay32.lib")

int main ()
{
SSL_CTX* ctx = NULL;
SSL_METHOD* meth = NULL;

OpenSSL_add_ssl_algorithms(); // 初始化
SSL_load_error_strings(); // 为打印调试信息作准备
meth = TLSv1_client_method(); // 采用什么协议(SSLv2/SSLv3/TLSv1)在此指定
ctx = SSL_CTX_new (meth);
printf("%X\n", ctx);

return 0;
}

在VC6里面编译时报错:

Compiling...
main.cpp
Linking...
libeay32.lib(bss_sock.obj) : error LNK2001: unresolved external symbol _closesocket@4
libeay32.lib(bss_sock.obj) : error LNK2001: unresolved external symbol _shutdown@8
libeay32.lib(bss_sock.obj) : error LNK2001: unresolved external symbol _WSAGetLastError@0
libeay32.lib(bss_sock.obj) : error LNK2001: unresolved external symbol _recv@16
libeay32.lib(bss_sock.obj) : error LNK2001: unresolved external symbol _WSASetLastError@4
libeay32.lib(bss_sock.obj) : error LNK2001: unresolved external symbol _send@16
Debug/vc6_Test.exe : fatal error LNK1120: 6 unresolved externals
Error executing link.exe.
Creating browse info file...

vc6_Test.exe - 7 error(s), 0 warning(s)




我在想是否是VC6的编译器较老的缘故,于是删除原来的OpenSSL,重新解压OpenSSL,再用“vs08命令提示”来编译OpenSSL。然后,编译和test OpenSSL也都是OK的。但是在vs08里面编译测试代码时也是相同的报错:

错误 1 error LNK2019: 无法解析的外部符号 _closesocket@4,该符号在函数 _sock_free 中被引用 c:\Documents and Settings\opos\桌面\_vs08_consol_test\_vs08_consol_test\libeay32.lib 1 _vs08_consol_test
错误 2 error LNK2019: 无法解析的外部符号 _shutdown@8,该符号在函数 _sock_free 中被引用 c:\Documents and Settings\opos\桌面\_vs08_consol_test\_vs08_consol_test\libeay32.lib 1 _vs08_consol_test
错误 3 error LNK2019: 无法解析的外部符号 _WSAGetLastError@0,该符号在函数 _BIO_sock_should_retry 中被引用 c:\Documents and Settings\opos\桌面\_vs08_consol_test\_vs08_consol_test\libeay32.lib 1 _vs08_consol_test
错误 4 error LNK2019: 无法解析的外部符号 _recv@16,该符号在函数 _sock_read 中被引用 c:\Documents and Settings\opos\桌面\_vs08_consol_test\_vs08_consol_test\libeay32.lib 1 _vs08_consol_test
错误 5 error LNK2019: 无法解析的外部符号 _WSASetLastError@4,该符号在函数 _sock_read 中被引用 c:\Documents and Settings\opos\桌面\_vs08_consol_test\_vs08_consol_test\libeay32.lib 1 _vs08_consol_test
错误 6 error LNK2019: 无法解析的外部符号 _send@16,该符号在函数 _sock_write 中被引用 c:\Documents and Settings\opos\桌面\_vs08_consol_test\_vs08_consol_test\libeay32.lib 1 _vs08_consol_test
错误 7 fatal error LNK1120: 6 个无法解析的外部命令 C:\Documents and Settings\opos\桌面\_vs08_consol_test\Debug\_vs08_consol_test.exe _vs08_consol_test



请问这个怎么解决啊?? 没有头绪,请指点下啊~~ 非常感谢 !!


...全文
616 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
CCDDzclxy 2013-07-20
  • 打赏
  • 举报
回复
靠 来个人接分都没啊,接了我就结了啊..........
Kaile 2013-07-20
  • 打赏
  • 举报
回复
我来了,运气不错,接分
CCDDzclxy 2013-07-09
  • 打赏
  • 举报
回复
#include <winsock2.h> #pragma comment(lib, "ws2_32.lib") 晕了,来个人接分吧

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧