我尝试在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
我在这里缺少什么。
答案 0 :(得分:0)
lnproc似乎是与Oracle C预编译器一起使用的组件,如文档here所示。尝试输入&#34;设置验证&#34;然后重新运行最后的lnproc命令,以查看是否有更多详细信息显示遇到无效限定符的位置。然后&#34;设置noverify&#34;把它关掉。