Gọi thư viện và các hàm liên quan

Chào các bạn. Mình đang mắc chỗ này chưa biết giải quyết ra sao mong các bạn chia sẻ
Có thư viện A trong thư viện A có các hàm (a, b, c,vv).
Vậy cần viết một chương trình c++ gọi tới thư viện A và các hàm tính toán trong A
Mong các bạn chia sẻ với ạ.
Cảm ơn các bạn nhiều

Giả sử

// A.h
int add(int x, int y);
// A.cpp
int add(int x, int y) {
    return x + y;
}

thì

// main.cpp
#include "A.h"

int main() {
    std::cout << add(1, 2);
}

Ví dụ: trong thư viện CMSIS có các hàm

{
        Convolution:  {trong này lại có các thư viện là math.h,string.h, v.v ,}
        Relu: {trong này có các thư viện là nnmath.h, nnstring.h, vv} , 
        maxpooling: { trong này lại có các thư viện mmath.h, mstring.h ,,vv}
}

Viết một chương trình c++ gọi tới thư viện CMSIS này và dùng các thư viện math.h, string.h này để tính toán?
Mình có làm theo bạn hướng dẫn trên nhưng ý của mình là như ví dụ này.
Bạn vui lòng giúp mình với

Hi babatn.
Bạn có thể nói rõ hơn được không ? Muốn dùng thu viện trong C/C++ thì cần file .h để include và các file nhị phân hoặc mã nguồn của nó thôi. Còn dùng gì hơn nữa đâu @_@!

1 Like

Hi bạn Tao Không Ngu
Ý của tớ là thư viện CMSIS độc lập với thư viện trong c++, Giờ viết một file c++ để gọi đến thưu viện CMSIS này và có thể dùng các hàm trong thư viện CMSIS này để tính toán.

Thư viện CMSIS phải nói rõ là cho device nào và thường nó là C chứ không phải C++.

Cần phải cung cấp tên IDE là gì, version bao nhiêu. Bởi vì mỗi loại IDE và version có cách thao tác ít nhiều khác nhau.

Sau đó là khai báo đường dẫn tới CMSIS. Add các tập tin cần thiết (.h, .c, .s…) vào project.

Cuối cùng là thực hiện include và gọi hàm như hướng dẫn trong các bài trên.

1 Like

cái này bạn càn làm 2 bước :
1 là phải build thành công thư viện CMSIS kia ra file thư viện ( static hoặc dynamic ), nếu bạn build static thì sẽ ra file .lib trên Win hoặc .a trên linux, build dynamic sẽ ra .dll hoặc .so
2 là cần link cái thư viện trên vào chương trình hiện tại của bạn. Để link thành công bạn cần set up 2 cái đường dẫn đến folder chứa các header file của thư viện CMSIS , và đường dẫn đến folder chứa các lib đã build ra ở bước 1 kia.

Hi babatn.

  1. Ý bạn là thư viện lại dùng một thư viện khác ?
  2. Bạn có thể tìm hiểu thêm về quá trình biên dịchliên kết. Quá trình biên dịch cần file .h để kiểm tra. và quá trình liên kết sẽ kết hợp các file .o và các file thư viện tĩnh để tạo ra file thực thi. Khi thực thi nếu cần các thu viện liên kết động thì HDH sẽ tìm và tải vào ram.
  3. Sau khi đã hiểu các khải niện trên thì qua lại vấn đề của bạn.
    Bạn cần các file .h được include để biên dịch. (thường các thu viện math đi kèm với trình biên dịch nếu không thì bạn cần tìm cho đủ). Lúc sinh file thực thi bạn cần các file nhị phân của tất cả các thư viện và thư viện con (các file nhị phân của thư viện math thường đi kèm với trình biên dịch nếu dùng ngoài thì bạn cần tìm cho đủ) thêm các cờ để trình biên dịch biến là dùng thêm các thư viện nào -l<tên thu viện không có lib> với math là -lm.

VD Thự viện CMSIS có 2 file. CMSIS.hlibCMSIS.so.
Khi biên dịch. gcc -c main.c -I<thư mục chứa file CMSIS.h> -I<thư mục chứa file .h của các thư viện con> được file main.o
Khi liên kết. gcc main.o -o main -L<thư mục chứa file libCMSIS.so> -L<thư mục chứa file .so của các thư viện con> -lCMSIS -lm -l<tên các thư viện con> được file main
Khi thực thi chép các file .somain cùng một thư muc.
P/S Link

MÌnh đã hiểu vấn đề. Cảm ơn các bạn đã chia sẻ

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?