Tôi đang viết chương trình nhắn tin tức thì an toàn trong C++ bằng cách sử dụng thư viện libtomcrypt C cho các hàm RSA và SPRNG của nó. Tôi đã libtomcrypt biên dịch như là một thư viện tĩnh và tôi đã có thể liên kết với nó và chạy các chức năng sprng và xem và sử dụng dữ liệu ngẫu nhiên nó được tạo ra.Không thể liên kết tomsfastmath với libtomcrypt
Sự cố tôi đang gặp đang cố gắng sử dụng hàm rsa_make_key() có chức năng phụ thuộc vào thư viện toán được liên kết để hoạt động.
Trong trường hợp này, tôi đang cố gắng sử dụng Tomsfastmath (tfm) mà tôi cũng đang cố liên kết dưới dạng thư viện tĩnh. Cả hai thư viện này nằm trong thư mục dự án của riêng họ, một thư mục từ thư mục dự án của tôi (ví dụ: ../libtomcrypt)
Trong mã của tôi khi tôi cố truy cập bộ mô tả toán học "tfm_desc", tôi gặp lỗi test_crypt.cpp:8:11: error: 'tfm_desc' was not declared in this scope
. Điều này khiến tôi nghĩ rằng tfm không được liên kết chính xác với libtomcrypt. Tôi đã đọc tài liệu cho cả hai thứ này, nó không rõ ràng lắm.
Tôi đang ở kết thúc ở đây. Tôi đang làm gì sai?
Dưới đây là làm cho tôi tập tin
CC:=gcC#C Compiler
CFLAGS:=-std=c99 -O0 -I/home/k3rb3ros/csci484-CMU-/libtomcrypt-1.17/src/headers -g - Wall -Wextra#C Compiler flags
CPP:=g++ #C++ Compiler
CPPFLAGS:=-std=gnu++0x -O0 -I/home/k3rb3ros/csci484/csci484-CMU-/libtomcrypt- 1.17/src/headers -L. -g -Wall -Wextra#C++ Compiler flags
#CPPFLAGS:=-std=gnu++0x -O0 -g -Wall -Wextra #C++ Compiler flags
LDFLAGS:= -lSDL -lSDL_net -ltfm -ltomcrypt
CSOURCES= #C files used in this program
CPPSOURCES=connection.cpp chat.cpp test_crypt.cpp #CPP files used in this prgram
#COBJECTS=$(CSOURCES:.c=.o)libtfm.a libtomcrypt.a
COBJECTS=$(CSOURCES:.c=.o)
CPPOBJECTS=$(CPPSOURCES:.cpp=.o)
BINARY=down_low
all: $(BINARY) $(COBJECTS) $(CPPOBJECTS)
.c.o:
$(CC) $(CFLAGS) -c $< -o [email protected]
.cpp.o:
$(CPP) $(CPPFLAGS) -c $< -o [email protected]
$(BINARY): $(COBJETS) $(CPPOBJECTS)
$(CPP) $(CPPFLAGS) $(COBJECTS) $(CPPOBJECTS) -o [email protected] $(LDFLAGS)
clean:
rm -rv $(BINARY) $(COBJECTS) $(CPPOBJECTS)
và đây là chức năng test_crypt tôi
#include "headers/test_crypt.h"
using namespace std;
void test_crypt()
{
int err = 0;
int rng_idx = -1; //rng index, not sure if I need this
ltc_mp = tfm_desc; //tell tomcrypt to use toms fast math
rsa_key pub_key;
prng_state random_gen;
if((err = sprng_start(&random_gen)) != CRYPT_OK) //start the rng and check for errors
{
cout << "start error " << error_to_string(err) << endl;
}
rng_idx = find_prng("sprng");
if((err = sprng_ready(&random_gen)) != CRYPT_OK)
{
cout << "Ready error " << error_to_string(err) << endl;
}
//test toms fast math present and working
//fp_int test;
//fp_init(&test);
//sprng_read(entropy, size, &random_gen);
/*
if((err = rsa_make_key(NULL, //PRNG state
rng_idx, //PRNG idx
1024/8, //Size of key
65537, //e
&pub_key) //RSA key
) != CRYPT_OK) //if conditon test
{
cout << "RSA Key Generation error " << error_to_string(err) << endl;
}
rsa_free(&pub_key); //free the key when we are done with it;
*/
sprng_done(&random_gen); //done generating random numbers
}
Đó là lỗi trình biên dịch chứ không phải lỗi liên kết. – melpomene