ERLEDIGT
JA
JA
ANTWORTEN
2
2
ZUGRIFFE
2105
2105
EMPFEHLEN
-
Hi,
steh erneut seit tagen vor demselben problem. in google macht sich das thema sehr rar und zudem alles in englisch. Zu dem unten genannten Code habe ich natürlich die mex.h inkludiert. Dennoch bekomme ich für die rot angezeigten Matlab-Funktionen Linker-Fehler. Dasselbe Problem hatte ich zuvor auch mit der mmsystem.h allerdings hat mir hier folgende Zeile die Fehler verschwinden lassen:
Weiß vielleicht jemand wie ich die Matlab-Funktionen aus mex.h oder matrix.h für MFC valide machen kann?Code :1
#pragma comment(lib, "winmm.lib")
Hier noch die Funktion welche die rotmarkierten Fehler auslöst:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
bool CWiwoDlg::AllocBuffers(void) { int i, nDataBlockSize, dims[1]; // allocate WAVEHDR buffer blocks nDataBlockSize = GlPar.nNperB*GlPar.nChannels*2; // in Bytes for(i=0; i < MAX_BUFFERS; i++) { whi[i] = (WAVEHDR*)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WAVEHDR)); if(whi[i]) { whi[i]->lpData = (char*)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, nDataBlockSize); whi[i]->dwBufferLength = nDataBlockSize; } who[i] = (WAVEHDR*)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WAVEHDR)); if(who[i]) { who[i]->lpData = (char*) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, nDataBlockSize); who[i]->dwBufferLength = nDataBlockSize; } } // input buffer in DWORDS, used to sign extend 16 bit integer data // to 32 bit integers pInpBuf = (int*)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, nDataBlockSize*2); // in DWORDS = 4 bytes // create MATLAB array to store INPUT and OUTPUT data (GlPar.nMBuffers acquired) dims[0] = GlPar.nNperB * GlPar.nChannels *GlPar.nMBuffers ; plhs[0] = [COLOR="Red"]mxCreateNumericArray[/COLOR](1,dims,mxINT32_CLASS, mxREAL); pRecBuf = (int*)[COLOR="Red"]mxGetPr[/COLOR](plhs[0]); // for ease of use if((pInpBuf == NULL) | (whi[0] == NULL) | (who[0] == NULL) | (pRecBuf == NULL)) return false; else return true; }
-
im internet findet man des öfteren den hinweis das es mit folgenden Zeilen ebenfalls gehen müsste, allerdings kommt dann die Meldung das die lib nicht geöffnet werden kann und das Bibliotheksformat ungültig sei.
Ich habe selbstverständlich alle Files inkludiert und die dll sowie lib Dateien im gleichen Arbeitsverzeichnis drin, aber dennoch bleibt es beim Linker Fehler...Code :1 2 3 4
#pragma comment(lib, "Libmx.lib") #pragma comment(lib, "libmex.lib") #pragma comment(lib, "libmat.lib") #pragma comment(lib, "libeng.lib")
-
habe das problem jetzt endlich gelöst.
Unter "Matlab/R2007a/extern/lib/win32/microsoft/"
finden sich die Library Dateien für die Matlab-Funktionen. Meine waren auf Borland zugeschnitten sodass der Compiler natürlich einen Linker-Fehler ausgab.
libmex.lib
libmat.lib
libeng.lib
libmx.lib
Diese 4 Dateien müssen dann lediglich in das Projekt eingebunden werden und schon wurde der Code erkannt. Unter Visual Studio 2005 muss man im übrigen zusätzlich den Include-Pfad angeben ("Matlab/R2007a/extern/include/") sowie eine bestimmte Einstellung ändern, ich habe sie momentan nicht mehr im Kopf, kann sie aber bei Interesse nochmal nachtragen.
Ähnliche Themen
-
Richtige Syntax bei Operatorüberladung, wann sind "friend", "const", "&" nötig?
Von mrs_schokokeks im Forum C/C++Antworten: 4Letzter Beitrag: 25.08.10, 19:13 -
Eingabe in der timeline: "time*100" - bei Effekt "turbulentes Versetzen"-"Evolution"
Von MTMonline im Forum Videoschnitt, Videotechnik & -produktionAntworten: 2Letzter Beitrag: 25.04.08, 09:49 -
Linker-Fehler: "msvcirtd.lib" kann nicht geöffnet werden
Von LukeS im Forum C/C++Antworten: 2Letzter Beitrag: 12.11.06, 20:17 -
Finder methods + JBoss + Was expecting one of: "CONCAT" "SUBSTRING" ... "(" ... <STRI
Von cengizhdde im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 6Letzter Beitrag: 27.05.05, 15:29 -
[C++ Builder] "[Linker Fataler Fehler] Fatal: Unable to open file 'PROJECT1.OBJ'"
Von Der nette Mann im Forum Borland CBuilder und VCLAntworten: 1Letzter Beitrag: 05.11.03, 12:31





Zitieren
Login






