calllib expects bool type

조회 수: 4 (최근 30일)
Tom K
Tom K 2021년 7월 26일
답변: Soumya 2025년 6월 11일
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?

답변 (1개)

Soumya
Soumya 2025년 6월 11일
Hi @ Tom K,
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:
I hope this helps!

카테고리

Help CenterFile Exchange에서 C Shared Library Integration에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by