calllib expects bool type
Show older comments
Hi, I am using the FTDI MPSSE library to make an SPI interface (.dll and h file). I want to use the SPI_IsBusy function, but it expects a pointer to a boolean. I read that it is not possible to use a bool type in Matlab calllib. Is it possible to work around this issue?
Answers (1)
Soumya
on 11 Jun 2025
While working with the FTDI MPSSE library to create an SPI interface in MATLAB, I encountered a common issue when calling the ‘SPI_IsBusy’ function. The challenge arose because the function expects a pointer to a boolean (bool*) as an argument, which creates an issue since MATLAB’s ‘calllib’ function does not support the C bool data type directly. Passing a ‘boolean’ pointer from MATLAB results in errors or unexpected behaviour due to the mismatch between MATLAB’s data types and those expected by the external C library.
This limitation can be worked around by leveraging MATLAB’s ‘lib.pointer’ class with a ‘uint8Ptr’ data type. By initializing a ‘lib.pointer’ of type 'uint8Ptr' with a value of 0 (representing false), the pointer can be passed to the ‘SPI_IsBusy’ function. The following code snippet can help you achieve the same:
busyPtr = libpointer('uint8Ptr', uint8(0));
status = calllib('libMPSSE', 'SPI_IsBusy', handle, busyPtr);
For more detailed information on working with pointer arguments in MATLAB when calling external C libraries, you refer to the official MathWorks documentation here:
- https://www.mathworks.com/help/matlab/ref/lib.pointer-class.html
- https://www.mathworks.com/help/matlab/matlab_external/working-with-pointers.html
I hope this helps!
Categories
Find more on C Shared Library Integration in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!