我要的是,按照the documentation,只要使用此代碼:無法獲得libsodium預建庫MinGW的窗口工作
#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;
}
在installation section的文檔的窗口,它指出了預編譯的Windows版本爲MinGW32。由於我在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>
。有什麼奇怪的是,如果我只是把sodium_init()
(不檢查一個if
語句的輸出),它給了我一個警告,指出:
*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))
有人可以幫我找出如何讓鈉對我的設置工作?
你不*鏈接*與實際庫。在Code :: Blocks的項目設置中,應該有一個包含liker設置的選項卡或類似選項。在它你需要添加實際的庫。只包括頭文件是不夠的。 –
連接這個庫的語法是什麼?我似乎無法在文檔中找到它。 – realbananas