Error calling loadlibrary: "functions not found"

5 Ansichten (letzte 30 Tage)
Siqi Li
Siqi Li am 30 Mär. 2015
Kommentiert: snow John am 30 Sep. 2021
I'm trying to automate a device using Matlab through calling a dll file provided by the manufacturer. However, it kept returning errors saying "functions not found", even after I checked with "libisloaded" and Matlab returns 1. Here is the code and error messages:
>> fullpathToDll='C:\D4100_DLLHeaders\D4100_usb.dll'
fullpathToDll =
C:\D4100_DLLHeaders\D4100_usb.dll
>> header1='C:\D4100_DLLHeaders\D4100_usb';
>> header2='C:\D4100_DLLHeaders\resource.h';
>> header3='C:\D4100_DLLHeaders\devioctl.h';
>> header4='C:\D4100_DLLHeaders\ezusbsys.h';
>> header5='C:\D4100_DLLHeaders\main.h';
>> header6='C:\D4100_DLLHeaders\RegisterDefines.h';
[notfound,warnings]=loadlibrary(fullpathToDll,header1,'addheader',header2,'addheader',header3,'addheader',header4,'addheader',header5,'addheader',header6);
Warning: Message from C preprocessor:
lcc preprocessor warning: C:\D4100_DLLHeaders\main.h:173 C:\D4100_DLLHeaders\D4100_usb.h:19 EOF inside comment
lcc preprocessor warning: C:\D4100_DLLHeaders\RegisterDefines.h:40 C:\D4100_DLLHeaders\D4100_usb.h:23 EOF inside comment
lcc preprocessor warning: C:\D4100_DLLHeaders\D4100_usb.h:69 EOF inside comment
> In loadlibrary at 266
Warning: Warnings messages were produced while parsing. Check the functions you
intend to use for correctness. Warning text can be viewed using:
[notfound,warnings]=loadlibrary(...)
> In loadlibrary at 275
Warning: The function 'bOpenDriver' was not found in the library
> In loadlibrary at 319
Warning: The function 'ParseDeviceDescriptor' was not found in the library
> In loadlibrary at 319
Warning: The function 'ParseConfigurationDescriptor' was not found in the library
> In loadlibrary at 319
Warning: The function 'DumpBuffer' was not found in the library
> In loadlibrary at 319
Warning: No functions found in library.
> In loadlibrary at 327
The functions that give the warnings are from 'main.h'. What's causing the problems? Is there something wrong with the header files? I got those from the manufacturer and they have verified that the files work on LabView but have not tested them in Matlab.
Could someone help me solve this problem? Thanks!!
Siqi

Antworten (2)

Siqi Li
Siqi Li am 7 Apr. 2015
With a second look, I suspect that this might be a compiler issue. Matlab is using lcc compiler, which is C. But in my header file, it contains "extern "C" ", which means it's for C++? Here is what my main header file looks like:
#define DLL_EXPORT
#if defined DLL_EXPORT
#define USB_DLL __declspec(dllexport)
#else
#define USB_DLL __declspec(dllimport)
#endif
#undef UNICODE
#include <windows.h>
#include <malloc.h>
#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
#include "stdarg.h"
#include "main.h"
#include "devioctl.h"
#include "ezusbsys.h"
#include "RegisterDefines.h"
extern "C"
{ ...//a bunch of functions here
}
//#############EOF##################
I also created a prototype file, using the demo from the previous answer. I ran it using loadlibrary(dllfilename,@mfilename). With "libisloaded", it returns 1, but the problem is "no functions found".
Is it really the compiler causing this issue? How should I change it?
Thanks!!
Siqi

Image Analyst
Image Analyst am 30 Mär. 2015
Did you run Dependency Walker (Google it) on your DLL to see what functions it actually has in it?
  5 Kommentare
Siqi Li
Siqi Li am 7 Apr. 2015
Hello,
With a second look, I suspect that this might be a compiler issue. Matlab is using lcc compiler, which is C. But in my header file, it contains "extern "C" ", which means it's for C++? Here is what my main header file looks like:
#define DLL_EXPORT #if defined DLL_EXPORT #define USB_DLL __declspec(dllexport) #else #define USB_DLL __declspec(dllimport) #endif #undef UNICODE #include windows.h #include malloc.h #include assert.h #include stdlib.h #include stdio.h #include "stdarg.h" #include "main.h" #include "devioctl.h" #include "ezusbsys.h" #include "RegisterDefines.h" extern "C" { ...//a bunch of functions here } //#############EOF################## I also created a prototype file, using the demo from the previous answer. I ran it using loadlibrary(dllfilename,@mfilename). With "libisloaded", it returns 1, but the problem is "no functions found".
Is it really the compiler causing this issue? How should I change it?
Thanks!!
Siqi
Image Analyst
Image Analyst am 7 Apr. 2015
I don't really know - I've only had to do it once. I think you should just call them and ask them. Might as well get some support from them considering the huge amount of money you had to pay for the compiler toolbox.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu MATLAB Compiler finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by