2016-07-25 1 views
0

J'utilise une fonction OpenSSL dans mon programme simple. Mais je reçois des symboles non résolus pour cette fonction. Vous trouverez ci-dessous la configuration des propriétés de mon projet. J'ai suivi d'autres publications décrivant comment inclure OpenSSL dans un projet et les exécuter. Quel est le problème avec mon installation Visual Studio 2013?Problèmes de liaison avec OpenSSL dans Visual Studio 2013

Erreur 1 erreur LNK2019: _SHA1 symbole externe non résolu référencé dans la fonction _main

pourrait-il que j'utilise la version OpenSSL 64 bits? Est-ce que mon projet est <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> 

Solution:

Le problème était que je liez aux 64 bits des bibliothèques statiques quand je devrais être un lien vers les bibliothèques statiques 32 bits. Cela le fixe:

Changez donc tous >C:\OpenSSL-Win64\... en >C:\OpenSSL-Win32\.... Et installez le programme d'installation OpenSSL 32 bits.

+0

Doit aimer les modérateurs à la fois la question «en double» liée (qui a été supprimée depuis) ​​et le lien commenté ci-dessus sont à peu près aussi utiles et pertinentes à la question qu'un sac de bites. –

+0

Certains d'entre nous essaient de faire en sorte que les OP soient bien équilibrés plutôt que d'être utilisés pour les cookies. Mes excuses le lien suggéré était inutile. Ce n'était pas clair pour moi si vous rencontriez le problème basé sur les répertoires et ce que je sais sur les noms de bibliothèques. Le lien a été supprimé. – jww

Répondre

1

Le problème était que je faisais des liens vers les bibliothèques statiques 64 bits quand je devrais faire un lien vers les bibliothèques statiques 32 bits. Cela le corrige:

Changez donc tous C:\OpenSSL-Win64\... en C:\OpenSSL-Win32\..... Et installez le programme d'installation OpenSSL 32 bits.