error in using calllib
16 ビュー (過去 30 日間)
古いコメントを表示
I am using Microsoft visual studio 2008 and MATLAB 7.11.0(R2010b) i want to use callib function but it shows me an error?
>> loadlibrary('t1.dll', 't1header.h')
>> calllib('t1','Add',2,3) ??? Error using ==> calllib Method was not found.
please help me
1 件のコメント
Philip Borghesani
2012 年 12 月 17 日
Do you recive any warnings when you load the library? What is the output of libfunctions t1? If you issue the command:
NotFound=loadlibrary('t1.dll', 't1header.h');
What is the content of NotFound?
回答 (2 件)
Walter Roberson
2012 年 12 月 14 日
That could mean that Add was not found in the library.
In the code that defines Add, is that code C or C++ ? If it is C++, is it in a
extern "C"
section? If it is C++ and is not in an extern C section, then internally it would not be known by the name Add . (This is a deliberate design feature of C++ in order to prevent accidental calling of a C++ routine without a proper "this" object in place.)
3 件のコメント
Walter Roberson
2012 年 12 月 17 日
I'm sure I answered this...
You are attempting to call upon a function named Add, passing to it two double numbers. Your routine defines a function named Add that accepts int numbers. You must match the type of parameter you are passing with the type of parameter the routine accepts.
Reminder, in MATLAB,
A = 2
defines A to be double, not integer. It is exactly the same as if you had used
A = 2.0000000;
or
A = 0.02E+2
Whereas
A = uint8(2)
would assign an 8 bit unsigned integer to A.
The number of bits in an "int" depends upon your C++ compiler.
Philip Borghesani
2012 年 12 月 17 日
Calllib will automatically convert all simple data types for you. The types are not the problem. Matlab matrices are also automatically converted to native pointer types to a vector/matrix.
Philip Borghesani
2012 年 12 月 17 日
Given the header and code you posted it looks like you are not exporting your function from the library. Read up on building a DLL with exported functions and the declspec compiler extension. Dependency walker can be used to verify that the function was correctly exported without name mangling.
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Call C from MATLAB についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!