を動作するようにmingwのウィンドウのlibsodium事前に構築されたライブラリーを取得できませんthe documentationあたりとして、である、ちょうどこのコードを使用:ドキュメントのウィンドウのinstallation sectionでは、私が欲しいもの
#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;
}
を、それが述べMinGW32のプリコンパイル済みのWindows版。私がMinGWでコードブロックを使用しているとき、私はそれらが動作するはずであると考えました。
libsodium-1.0.13-mingw.tar.gz
ファイルをダウンロードして抽出しました。私はlibsodium-win32
フォルダのすべての内容を取り出し、MinGWルートC:\Program Files (x86)\CodeBlocks\MinGW
(フォルダinclude
、bin
、lib
と一致して、これが正しい方法だと思うようにします)。
私はその後、上からのコードスニペットを持つコードブロックで新しいプロジェクトを作成し、-std =のC99でコンパイル(-std = gnu99は違いはありませんが)と、次の警告を得る:
*filepath*\testsodium\main.c 8 undefined reference to 'sodium_init'
*filepath*\testsodium\main.c 11 undefined reference to 'randombytes_random'
を
これは何らかの理由でそれが見つからないか、実際には<sodium.h>
を含んでいないことを示しています。どのような奇妙なのは、私はちょうど(if
文で出力をチェックせず)sodium_init()
を取るならば、それは私に示す警告を与えることである:それはの欠如に気づくよう、それが実際に解析されますないことを私に示して
*filepath*\testsodium\main.c 8 warning: ignoring return value of 'sodium_init', declared with attribute warn_unused_result [-Wunused-result]
結果をチェックする。ビルドログを確認すると、mingw32-gcc.exe
は-Wunused-result
という警告をスローし、mingw32-g++
はエラーをスローします。
-------------- 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))
誰かが私の設定で動作するようにナトリウムを取得する方法を見つけ出す手助けすることはできますか?
次のとおりです。私は記憶が正しけれ場合 )私が思うMGWでは.aで終わるのlibファイル(あるあなたがそれを行う 2)実際のライブラリとのリンク*。 Code :: Blocksのプロジェクト設定のどこかに、好みの設定を含むタブなどが必要です。その中に実際のライブラリを追加する必要があります。ヘッダーファイルだけを含めるだけでは不十分です。 –
このライブラリをリンクする構文は何ですか?私はドキュメントでそれを見つけることができないようです。 – realbananas