- Using the 'int64()' function on the output - https://www.mathworks.com/help/matlab/ref/int64.html
- Modifying the function definition to return an array pointer with type "long long" instead of a scalar output. The 'out' variable in MATLAB will then be a 'libpointer' object - https://www.mathworks.com/help/matlab/ref/libpointer.html
First output of calllib is always double.
2 views (last 30 days)
Show older comments
If I have a function in a C library declared in a C header like so:
long long some_function();
And call the function like so:
loadlibrary('the_library', 'the_header.h');
out = calllib('the_library', 'some_function');
The output "out" is of type double, instead of int64.
When generating a prototype file for the library, the value of "LHS" is detected as "int64", but this does not seem to effect what the actuall output type is when calling the function.
0 Comments
Accepted Answer
Paras Gupta
on 30 Apr 2024
Hey Zachary,
In my understanding, you want the output type of the 'calllib()' function to be 'int64' instead of 'double' for a C function with return type "long long".
The type for all scalar values returned by MATLAB is 'double' by default. Please refer to the note given in the following documentation:
To convert the output to 'int64', you can try the following two workarounds:
Hope this helps.
0 Comments
More Answers (0)
See Also
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!