How to call a function in C++ from library(.so) created by code generation?

11 vues (au cours des 30 derniers jours)
Hyunjun Hyung
Hyunjun Hyung le 14 Avr 2021
Modifié(e) : Infinite_king le 17 Avr 2024
Hello, all.
I created a .so file by selecting the ert_shrlib.tlc option during the code generation.
This option sets the target language to C.
Anyway, I want to use this library in Cpp.
However, it is very difficult to use the library because of the difference between C and Cpp.
Does anyone know how to use libraries(.so) based on C in Cpp?

Réponses (1)

Infinite_king
Infinite_king le 17 Avr 2024
Modifié(e) : Infinite_king le 17 Avr 2024
Hi Hyunjun Hyung,
The C library can be used by a C++ program. In fact, many OS libraries are written in C. Therefore, whenever a system call is made by a C++ program, it is actually utilizing a C library.
However, to use a C library, C linkage should be used to link the C functions. In your C++ code, declare the functions from the C library as extern "C". This instructs the C++ compiler to use C linkage for those functions, preventing name mangling and ensuring compatibility with the C library.
Ideally, the header file should include the extern "C" keyword. If the header file does not contain this keyword, update the function declarations as follows
// Shift the function declaration inside the extern "C" scope
extern "C" {
void doSomething();
}
Finally, link the library while compiling as follows,
% linking library named 'my_library.so'
g++ .. -lmy_library -L/custom_directory_path

Catégories

En savoir plus sur Deployment, Integration, and Supported Hardware dans Help Center et File Exchange

Produits


Version

R2017a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by