Ce que je veux, comme par the documentation, il suffit d'utiliser ce code:Impossible d'obtenir libsodium bibliothèque pré-construit pour les fenêtres de MinGW pour travailler
#include <sodium.h>
#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
int main(void)
{
if (sodium_init() == -1) {
return 1;
}
printf("Random data: %"PRIu32"\n", randombytes_random()); //returns a uint32_t piece of random data
return 0;
}
Dans le installation section pour les fenêtres de la documentation, il affirme la Version Windows précompilée pour MinGW32. Comme j'utilise des blocs de code avec MinGW, j'ai pensé que ceux-ci devraient fonctionner.
J'ai téléchargé le fichier libsodium-1.0.13-mingw.tar.gz
et l'ai extrait. J'ai pris tout le contenu du dossier libsodium-win32
et les ai mis dans la racine MinGW C:\Program Files (x86)\CodeBlocks\MinGW
(les dossiers include
, bin
et lib
correspondent également, me faisant croire que c'est la bonne façon d'y aller).
je puis faire un nouveau projet dans codeblocks avec l'extrait de code ci-dessus et de compilez avec -std = C99 (bien que std = gnu99 ne fait pas de différence) et obtenir l'avertissement suivant:
*filepath*\testsodium\main.c 8 undefined reference to 'sodium_init'
*filepath*\testsodium\main.c 11 undefined reference to 'randombytes_random'
Ce qui m'indique que pour une raison quelconque ne peut pas trouver ou n'inclut pas réellement le <sodium.h>
. Ce qui est étrange est que si je prends juste sodium_init()
(sans vérifier la sortie dans un communiqué if
), il me donne un avertissement indiquant:
*filepath*\testsodium\main.c 8 warning: ignoring return value of 'sodium_init', declared with attribute warn_unused_result [-Wunused-result]
Ce qui me indique qu'il ne se fait analysé comme il remarque l'absence de vérifier le résultat. Vérification du journal de construction Je trouve que mingw32-gcc.exe
lève l'avertissement -Wunused-result
tandis que mingw32-g++
lève l'erreur.
-------------- Build: Debug in testsodium (compiler: GNU GCC Compiler)---------------
mingw32-gcc.exe -Wall -g -Wall -std=c99 -c
*filepath*\testsodium\main.c -o obj\Debug\main.o
*filepath*\testsodium\main.c: In function 'main':
*filepath*\testsodium\main.c:8:5: warning: ignoring return value of 'sodium_init', declared with attribute warn_unused_result [-Wunused-result]
sodium_init();
^
mingw32-g++.exe -o bin\Debug\testsodium.exe obj\Debug\main.o
obj\Debug\main.o: In function `main':
*filepath*/testsodium/main.c:8: undefined reference to `sodium_init'
*filepath*/testsodium/main.c:9: undefined reference to `sodium_init'
*filepath*/testsodium/main.c:12: undefined reference to `randombytes_random'
collect2.exe: error: ld returned 1 exit status
Process terminated with status 1 (0 minute(s), 0 second(s))
4 error(s), 1 warning(s) (0 minute(s), 0 second(s))
Quelqu'un peut me aider à comprendre comment obtenir sodium pour travailler sur ma configuration?
Vous n'avez pas * lien * avec la bibliothèque actuelle. Quelque part dans les paramètres du projet de Code :: Blocks, il devrait y avoir un onglet ou similaire qui contient des paramètres liker. Dans celui-ci, vous devez ajouter la bibliothèque actuelle. Il ne suffit pas d'inclure le fichier d'en-tête. –
Quelle est la syntaxe pour lier cette bibliothèque? Je n'arrive pas à le trouver dans la documentation. – realbananas