【发布时间】:2016-07-25 00:56:40
【问题描述】:
我在我的简单程序中使用了一个 OpenSSL 函数。但是我得到了那个函数的未解析符号。下面是我的项目属性设置 - 我关注了其他描述如何在项目中包含 OpenSSL 的帖子并执行了这些说明。我的 Visual Studio 2013 设置有什么问题?
错误 1 错误 LNK2019:未解析的外部符号 _SHA1 在函数 _main 中引用
难道我使用的是 64 位 OpenSSL 版本?难道我的项目是<CharacterSet>Unicode</CharacterSet>?
... Code generation = Multi-threaded Debug DLL (/MDd)
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>C:\OpenSSL-Win64\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>C:\OpenSSL-Win64\lib;C:\OpenSSL-Win64\lib\VC\static;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>libeay32.lib;libeay32MDd.lib;ssleay32.lib;ssleay32MDd.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
解决方案:
问题是当我应该链接到 32 位静态库时,我正在链接到 64 位静态库。这解决了它:
所以将所有>C:\OpenSSL-Win64\... 更改为>C:\OpenSSL-Win32\...。并安装 OpenSSL 32 位安装程序。
【问题讨论】:
标签: visual-studio openssl static-linking win64