无法使用ProC链接OpenVMS中的SSL库

时间:2014-08-04 18:19:05

标签: c openssl openvms

我尝试在OpenVMS中使用带有SSL的TCP / IP套接字来开发简单的客户端/服务器编程。我们正在访问代码中的Proc API。所以,我使用lnproc选项将我的程序与SSL库链接起来。 当我在链接时使用以下选项时,它会引发以下错误。 它的64位编译器所以我使用下面的, 选项1。  使用以下命令和选项编译,

cc/noopt/POINTER_SIZE=64/PREFIX=ALL stand=vaxc /nolist/object=<PROJ_PATH>client.obj /nodebug/include=(<PROJ_PATH>,SSL$INCLUDE,tcpware_include:)/nested_include_directory=primary_file <PROJ_PATH>client.c
lnproc <PROJ_PATH>client.EXE <PROJ_PATH>client.obj

%LINK-W-NUDFSYMS, 6 undefined symbols:
%LINK-I-UDFSYM,         BERR_EXIT
%LINK-I-UDFSYM,         ERR_EXIT
%LINK-I-UDFSYM,         SSL_GET_PEER_CERTIFICATE
%LINK-I-UDFSYM,         SSL_GET_VERIFY_RESULT
%LINK-I-UDFSYM,         X509_GET_SUBJECT_NAME
%LINK-I-UDFSYM,         X509_NAME_GET_TEXT_BY_NID
%LINK-W-USEUNDEF, undefined symbol ERR_EXIT referenced
    in psect $LINK$ offset %X00000030
    in module CLIENT file <PROJ_PATH>CLIENT.OBJ;1
%LINK-W-USEUNDEF, undefined symbol BERR_EXIT referenced
    in psect $LINK$ offset %X00000040
    in module CLIENT file <PROJ_PATH>CLIENT.OBJ;1
%LINK-W-USEUNDEF, undefined symbol SSL_GET_PEER_CERTIFICATE referenced
    in psect $LINK$ offset %X000000C0
    in module CLIENT file <PROJ_PATH>CLIENT.OBJ;1
%LINK-W-USEUNDEF, undefined symbol SSL_GET_VERIFY_RESULT referenced
    in psect $LINK$ offset %X000000D0

选项2:

cc/noopt/POINTER_SIZE=64/PREFIX=ALL PREFIX=ALL/stand=vaxc /nolist/object=<PROJ_PATH>client.obj /nodebug/include=(<PROJ_PATH>,SSL$INCLUDE,tcpware_include:)/nested_include_directory=primary_file <PROJ_PATH>client.c

我怀疑在与LIBSSL32.OLB,LIBCRYPTO32.OLB链接时是否需要使用lnproc库。 所以,我已经要求我的系统管理员为此安装库,但他们说使用shareble对象。 与可共享对象链接

lnproc/MAP <PROJ_PATH>client.EXE <PROJ_PATH>client.obj ,LINKER_OPT/OPTIONS

它会抛出以下错误

%DCL-W-IVQUAL, unrecognized qualifier - check validity, spelling, and placement

请注意, 在这些命令中,LINKER_OPT.OPT是一个包含的简单文本文件 以下几行:

SYS$SHARE:SSL$LIBSSL_SHR/SHARE
SYS$SHARE:SSL$LIBCRYPTO_SHR/SHARE

我在这里缺少什么。

1 个答案:

答案 0 :(得分:0)

lnproc似乎是与Oracle C预编译器一起使用的组件,如文档here所示。尝试输入&#34;设置验证&#34;然后重新运行最后的lnproc命令,以查看是否有更多详细信息显示遇到无效限定符的位置。然后&#34;设置noverify&#34;把它关掉。