Dynamic Library without a .h file
41 ビュー (過去 30 日間)
古いコメントを表示
Hello all,
I'm trying to establish communication with a hardware tool and it's API is given by a two-level approach.
For the second level, I don't have an .h-file and loadlibrary requires one. Can I load the dll anyway? (I assume the other dll will then be able to still communicate with this dll...
Thanks!
0 件のコメント
採用された回答
Walter Roberson
2012 年 2 月 7 日
You will not be able to use the MATLAB loadlibrary() call without a .h file.
If you do not need to call in to the dll yourself, then ideally you should not need to loadlibrary() it, as the dll that you do call should load it using OS calls.
4 件のコメント
Walter Roberson
2012 年 2 月 7 日
A loaded DLL can make callbacks to the MATLAB engine to call loadlibrary() -- provided, of course, that the .h exists.
There are operating system calls that can load libraries without needing .h files, but those calls rely on the code to "just know" what the binary calling sequence is under all conditions.
But MATLAB code doesn't use binary calling sequences, and MATLAB likes to pass around mxArray structures and kin, so there needs to be an interface layer between the way MATLAB operates and the way DLL's operate internally. MATLAB builds that interface code based upon the .h files, to navigate between the dynamically typed MATLAB and the statically typed DLL calls.
A DLL is in machine language, compiled from whatever source code language was suitable for the task (e.g., C, C++, Fortran). The DLL can make operating system calls and call statically typed routines, so the DLL can load additional libraries dynamically, as long as it knows _exactly_ how to talk to them.
MATLAB's mechanism is general, to try to talk to any DLL. Any one DLL only has to deal with the specific interfaces that the DLL needs to talk to.
Kaustubha Govind
2012 年 2 月 8 日
Benjamin: The error "Cannot initialize CDALib" seems to suggest that the OS is unable to load CDALib from the DLL that interfaces with MATLAB. Perhaps you need to add the directory containing CDALib.dll to the System PATH variable. Then restart MATLAB and try again?
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で C Shared Library Integration についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!