Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 错误LNK2019:未解析的外部符号\u soap\u ssl\u init_C++_Wcf_Ssl_Soap_Gsoap - Fatal编程技术网

C++ 错误LNK2019:未解析的外部符号\u soap\u ssl\u init

C++ 错误LNK2019:未解析的外部符号\u soap\u ssl\u init,c++,wcf,ssl,soap,gsoap,C++,Wcf,Ssl,Soap,Gsoap,我正在使用gsoap调用wcf Web服务。我的要求是我必须使用ssl协议来保护通信。我阅读作为ssl配置的参考 但在编译过程中,我遇到了以下错误: 错误1错误LNK2019:函数“public:int”中引用了未解析的外部符号\u soap\u ssl\u init\u thiscall LogServicesFacade::SendFileToServer(char const*)”(?SendFileToServer@LogServicesFacade@@QAEHPBD@Z)E:\Path

我正在使用gsoap调用wcf Web服务。我的要求是我必须使用ssl协议来保护通信。我阅读作为ssl配置的参考

但在编译过程中,我遇到了以下错误:

错误1错误LNK2019:函数“public:int”中引用了未解析的外部符号\u soap\u ssl\u init\u thiscall LogServicesFacade::SendFileToServer(char const*)”(?SendFileToServer@LogServicesFacade@@QAEHPBD@Z)E:\Path\To\My\Solution.Project\LogServicesFacade.obj Solution.Project

这是我的密码:

_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++作为编译器。我也看到了。作者说我必须在编译器中添加选项
DWITH_OPENSSL
。如何将其添加到VC编译器?

如前所述,我使用以下步骤减轻了错误:

  • 在项目上单击鼠标右键,然后从右键单击菜单中选择“属性”。在配置属性、C/C++和常规下,添加 包括gSOAP和openssl的路径。单击应用

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

  • 在“配置属性”、“链接器”和“常规”下,将路径添加到打开的SSL二进制目录,其中包含已编译的lib文件 驻留到其他库目录。单击应用

  • 在配置属性、链接器和输入下,将“libeay32.lib”和“ssleay32.lib”添加到其他依赖项。这些
    是开放的SSL库。单击应用

你是否链接到包含函数的库?我是C++的新手。关于
DWITH_OPENSSL
,我确信作者实际上说过
-DWITH_OPENSSL
,其中
-D
是定义宏的公共预处理器标志(例如GCC和Clang使用),这意味着它定义了宏
。您可以将其添加到“项目设置预处理器”选项卡中。@JoachimPileborg的一位用户说我使用文件名“ligsoapsl++.a”。我在gsoap目录的根目录中没有使用此名称的文件。文件以
lib
开头,以
结尾。a
是POSIX环境(如Linux或Mac OSX)中的静态库。您的库的名称应该类似于
gsoapssl++.lib