错误LNK2019:未解析的外部符号_soap_ssl_init

error LNK2019: unresolved external symbol _soap_ssl_init

本文关键字:符号 soap ssl init 外部 LNK2019 错误      更新时间:2023-10-16

我使用gsoap来调用wcf web服务。我的要求说我必须使用ssl协议来保护通信。我读了一篇文章作为ssl配置的参考。

但在编译时,我得到以下错误:

错误1错误LNK2019:未解析的外部符号_soap_ssl_init引用函数"public: int __thiscall LogServicesFacade::SendFileToServer(char const *)"路径(? SendFileToServer@LogServicesFacade@@QAEHPBD@Z) E: Solution.Project LogServicesFacade。obj的解决方案。项目

下面是我的代码:
_ns1__StoreEventFileResponse response;
_ns1__StoreEventFile input;
struct soap *soap = soap_new();
/*if (!sslInitiated)
{*/
    soap_ssl_init();
    //if (soap_ssl_client_context(soap, SOAP_SSL_DEFAULT, NULL, NULL,
        //"C:\Path\To\Certs\File\cacerts.pem", NULL, NULL))
    //{
        soap_print_fault(soap, stderr);
    //}
//}

我注释了另一个ssl函数来减少错误,以简化。

更新1

值得一提的是,我使用的是VS 2013。所以我使用Visual c++作为我的编译器。我还看到了gSOAP ssl文档。作者说我必须添加选项DWITH_OPENSSL编译器。我如何将此添加到VC编译器?

正如在代码项目文章中所说,我使用以下步骤减轻了错误:

  • 右键单击项目并从右键菜单中选择Properties。在"配置属性"、"C/c++"answers"通用"下添加包括gSOAP和Open SSL的路径。单击Apply。

  • 在配置属性,C/c++和预处理器下,添加"WITH_OPENSSL"(在gSOAP中启用SSL)和"DEBUG"(启用SSL)日志记录)到预处理器定义列表。单击Apply。

  • 在Configuration Properties, Linker和General下,添加Open SSL二进制目录的路径,其中包含编译的lib文件驻留到其他库目录。单击Apply。

  • 在配置属性,链接器和输入下,添加"libeay32"。Lib"answers"ssleay32"。lib"到附加依赖项。这些
    是Open SSL库。单击Apply。