ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
1592
1592
EMPFEHLEN
-
Hallo,
ich komme aus der Java Ecke und habe weder von C++ noch von Mathlab Ahnung. Jetzt muss ich für ein wissenschaftliches Paper den Graph-Matching Algorithmus unter http://www.seas.upenn.edu/~timothee/..._matching.html zum laufen bringen.
Mein Ziel ist es, einfach erstmal das Tutorial von denen lauffähig zu bekommen. Jetzt frage ich mich, was ich falsch mache.
Ich verwende Mathlab 7.8.0 (R2009a) und als C++ Compiler die neueste Version von "Microsoft Visual C++ 2008 Express".
Beim Aufruf von "compileDir" erhalte ich nun mehrere der folgenden Fehler:
Error: compilation of \mex_istril.cpp failed : Bibliothek "C:\USERS\JANNOE~1\APPDATA\LOCAL\TEMP\MEX_BY~1\templib.x" und Objekt "C:\USERS\JANNOE~1\APPDATA\LOCAL\TEMP\MEX_BY~1\templib.exp" werden erstellt.
mex_istril.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_matClose_d" in Funktion ""public: static void __cdecl MatlabInterface::save2matfile(struct mxArray_tag *,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?save2matfile@MatlabInterface@@SAXPAUmxArray_tag@@V?$basic_string@DU?$char_traits@D@std@@V?$allocat or@D@2@@std@@1@Z)".
mex_istril.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_matPutVariable_d" in Funktion ""public: static void __cdecl MatlabInterface::save2matfile(struct mxArray_tag *,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?save2matfile@MatlabInterface@@SAXPAUmxArray_tag@@V?$basic_string@DU?$char_traits@D@std@@V?$allocat or@D@2@@std@@1@Z)".
mex_istril.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_matOpen_d" in Funktion ""public: static void __cdecl MatlabInterface::save2matfile(struct mxArray_tag *,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?save2matfile@MatlabInterface@@SAXPAUmxArray_tag@@V?$basic_string@DU?$char_traits@D@std@@V?$allocat or@D@2@@std@@1@Z)".
mex_istril.mexw32 : fatal error LNK1120: 3 nicht aufgelöste externe Verweise.
C:\PROGRA~1\MATLAB\R2009A~1\BIN\MEX.PL: Error: Link of 'mex_istril.mexw32' failed.
Nach Recherchen bin ich darauf gekommen, dass es wohl immer um die Funktion "save2matfile" geht. Diese Funktion steht in der Klasse "MatlabInterface" und sieht wie folgt aus:
static void save2matfile(mxArray *A,string file,string varname){
//mxArray*mxA=array2mxArray(scores);
//setDimensions(mxA,m,n);
//save2matfile(mxA,"C:\\tim\\temp\\trash\\1.mat","A");
MATFile *pmat = matOpen(file.c_str(), "w");
if (pmat == NULL)
assert(0);//mexErrMsgTxt("error accessing mat file\n");
int status = matPutVariable(pmat, varname.c_str(), A);
if (status != 0)
assert(0);//mexErrMsgTxt("error writing mat file\n");
if (matClose(pmat) != 0)
mexPrintf("Error closing file %s\n",file.c_str());
else
mexPrintf("saved file %s\n",file.c_str());
}
Da der Paper bereits im Dezember eingereicht werden muss, stehe ich etwas unter Zeitdruck.
Daher wollte ich fragen, ob irgendjemand eine Idee hat?
Oder welche Informationen braucht ihr noch, um mir helfen zu können?
Woran könnte es liegen? Ich meine der Code müsste ja genau so laufen
Vielen herzlichen Dank für jede Hilfe!
Jan Nößner
-
09.11.09 17:07 #2
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.
Offenbar sind die Funktionen matClose_d, matOpen_d und matPutVariable_d nirgendwo definiert.
D.h. dir fehlt irgendeine (Import-) Bibliothek die diese Funktionen bereitstellt.
Ansonsten mußt du wirklich mal etwas genauer werden. Was für ein Tutorial? Was hast du wo runtergeladen, was hast du dann gemacht etc.
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Vielen Dank für Deine super schnelle Antwort.
Ich hoffe, dass ich tatsächlich eine Bibliothek nicht habe. Ich weiß aber nicht, wie ich das herausfinde...
Nun schreibe ich Dir ganz genau was ich gemacht habe:
Der Code, den ich verwenden möchte, ist unter http://www.seas.upenn.edu/~timothee/..._matching.html
Danach habe ich folgende Schritte (stehen auch auf dem Link) ausgeführt:
Also im Prinzip habe ich in Matlab die Befehle init (funktioniert) und anschließend compileDir eingegeben.1) start matlab
2) cd to directory where you unzipped the files (containing a README)
3) type init (to add paths) (ignore warnings about assert if any)
4) type compileDir (ignore warnings about assert if any) to compile mex files
make sure it says at the end: "Compilation of files succeded without error", otherwise try to compile problem files by hand
Vielen Dank nochmal für Hilfe!
Jan
PS: Noch so ne Anfängerfrage: Wie kompiliere ich "problem files by hand". Also wie ist in C++ der compile befehl für einzelne klassen...
-
09.11.09 19:05 #4
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Also da mußt du wirklich mal jemanden fragen der sich mit Matlab auskennt. Die Funktionen müssten in einer Matlab Bibliothek definiert sein. Evtl. schaust du dir mal die init.m Datei an ob du irgendwelche Pfade anpassen mußt.
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
Ähnliche Themen
-
Unterschied zwischen "Global" und "Public"
Von Nickie97 im Forum Visual Basic 6.0Antworten: 4Letzter Beitrag: 28.01.10, 17:05 -
error LNK2019: Verweis auf nicht aufgelöstes externes Symbol
Von Neustart im Forum C/C++Antworten: 3Letzter Beitrag: 21.08.09, 22:17 -
error LNK2019: Verweis auf nicht aufgelöstes externes Symbol
Von Nord-Süd-Richtung im Forum C/C++Antworten: 2Letzter Beitrag: 12.01.09, 14:45 -
error LNK2019: Verweis auf nicht aufgelöstes externes Symbol
Von soul710 im Forum C/C++Antworten: 2Letzter Beitrag: 31.07.08, 20:34 -
"Exchange 2000" vs "Public ShareFolder" was ist besser geeignet für OutlookDaten
Von Grafixboy im Forum NetzwerkeAntworten: 1Letzter Beitrag: 07.02.05, 15:36





Zitieren
Login






