我想使用Poco libraries将运行在各个远程站点上的Windows应用程序的电子邮件通知发送回总公司。似乎Poco使用Open SSL进行TLS。这两个项目的文档不是最方便用户的: - (
我无法获得与构建Poco NetSSL_OpenSSL
源相关的任何内容 - 我需要PocoNetSSL
.lib和DLL文件,但无法生成它们;我已经尝试构建示例,但由于路径问题,它们无法编译。
示例的Visual Studio项目文件表明它期望外部提供INCLUDE
路径,这些路径将指定OpenSSL
的安装位置。什么是外在的东西? Poco documentation表明它应该是INCLUDE
环境变量。对我来说,这不起作用。我可能会失踪什么? (我正在使用Win7 64位计算机上的VS 2015社区构建)。
我使用buildwin 140 rebuild
命令构建。 components
文件中的所有子项目都会正确构建,直到Crypto
项目。其构建如下:
1>Project "S:\3rdparty\Poco\Crypto\Crypto_vs140.vcxproj" on node 1 (rebuild target(s)).
1>_PrepareForClean:
Deleting file "obj\Crypto\debug_shared\Crypto.tlog\Crypto.lastbuildstate".
InitializeBuildStatus:
Touching "obj\Crypto\debug_shared\Crypto.tlog\unsuccessfulbuild".
ClCompile:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\CL.exe /c /I.\include /I..\Foundation\include /I"C:\Program Files (x86)\Visual Leak Detector\include" /Zi /nologo /W3 /WX- /Od /Oy- /D WIN32 /D _DEBUG /D _WINDOWS /D _USRDLL /D Crypto_EXPORTS /D _WINDLL /D _MBCS /GF /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /GR /Fo"obj\Crypto\debug_shared\\" /Fd"obj\Crypto\debug_shared\vc140.pdb" /Gd /TP /analyze- /errorReport:queue src\Cipher.cpp src\CipherFactory.cpp src\CipherImpl.cpp src\CipherKey.cpp src\CipherKeyImpl.cpp src\CryptoStream.cpp src\CryptoTransform.cpp src\DigestEngine.cpp src\OpenSSLInitializer.cpp src\RSACipherImpl.cpp src\RSADigestEngine.cpp src\RSAKey.cpp src\RSAKeyImpl.cpp src\X509Certificate.cpp
X509Certificate.cpp
1>src\X509Certificate.cpp(62): error C2027: use of undefined type 'x509_st' [S:\3rdparty\Poco\Crypto\Crypto_vs140.vcxproj]
S:\3rdparty\OpenSSL\OpenSSL-Win32\include\openssl/ossl_typ.h(119): note: see declaration of 'x509_st'
很明显,我不包括OpenSSL
中的任何内容。我不清楚的是应该包括哪些内容。 OpenSSL
源代码分发确实包含一个名为internal
的文件夹,它有助于...但是Poco建议的Windows二进制分发版(即WinOpenSSL
产品提到的here)编译远离那个“内部”文件夹。这似乎是正确的......但如果是这样,那就意味着Poco源在使用OpenSSL
的方式上可能是“错误的”。是吗?很可能不是。无论哪种方式,这里都存在冲突,其解决方案对我来说并不明显。
答案 0 :(得分:0)
一年前,我放弃了这个并使用了不同的产品,这就是文档的状态。
我最近有理由再次尝试,经过多次痛苦后,发现我可以按照以下方式编译:
Poco
文件夹中的ShiningLight安装OpenSSL 1.10,以便...\Poco\OpenSSL
与...\Poco\Crypto
并列build
文件夹的内容,并将其复制到...\Poco\OpenSSL\build
build.ps1
脚本,因此使用了build
文件夹中预编译的二进制文件buildwin.cmd
脚本,将OpenSSL
的位置指定为...\Poco\OpenSSL
buildwin.cmd
脚本这为我构建了所有项目而没有任何错误(仅此处有一些警告)。请注意,还有其他类似的设置可以编译MySQL& ODBC项目(即使用ODBC选项安装MySQL,自定义buildwin.cmd
脚本以适应)。