Borland C++ Builder: DLL übergeben (?)
-
Hallo,
Ich hab mich hier durch mehrere Beiträge durchgeklickt und auch im Tutorial mein Glück versucht, aber bisher hat nichts geklappt/ habe ich vieles nicht verstanden da ich bisher noch nichts mit DLLs (darum geht es hier doch, oder?) zu tun hatte und auch in C++ noch ein Anfänger bin. Hier mein Problem:
Ich habe ein C++ Programm, das bereits läuft. Nun soll ich es mit dem Borland Compiler (Embarcadero 2010) compilieren.
Bisheriger Compiler war MinGW. Das Programm nutzt sowohl die library lapack++ als auch die GNU Scientific Library (GSL).
Nachdem ich diese beiden runtergeladen hatte und im gleichen Ordner abgespeichert habe wie das C++ Programm bekomme ich
beim compilieren/ linken nun einige Fehler im folgenden Stil:[ILINK32 Fehler] Error: Nicht auflösbares externes '_gsl_rng_alloc' referenziert von C:\....
Ich habe bisher auch schon versucht, die libraries jeweils komplett in das Projekt einzubinden, aber die Fehlermeldungen
bleiben genau die selben. Muss ich sie noch auf eine andere Art dem Linker zugänglich machen? (Compilier-Fehler kommen
keine).Das ganze ist als Projekt eine Konsolenanwendung, ohne VCL, mit Mulitthreads.
Vielen Dank für Hilfen schonmal im voraus!
Ich hatte auch etwas von USELIB gelesen, aber nirgends die richtige Syntax...
-
Du mußt die entsprechenden '.lib'-Dateien noch dem Linker angeben (-l bzw. zusätzlich noch -L für den Pfad).
Falls die LIB-Dateien im falschen Format vorliegen, dann such mal hier im Forum nach "coff2omf".
-
wo (und wie, aber da hoffe ich noch, dass das dann vllt auch von selbst n bisschen klarer wird?) kann ich dem linker die lib denn angeben? das einzige, was ich zu linker finde ist unter projekt>optionen>c++ linker. aber da ist weder ein knopf zum aussuchen/laden einer lib (wie es irgendwo anders steht) noch ein feld, das für mich in frage kommend erscheint....
In der Zwischenzeit habe ich den überblick verloren, was von den dingen, die ich bisher getan habe, gut, unnütz oder schlecht war. Ich habe (nachdem ich das hier gefunde habe) die "lib" ordner von lapackpp und gsl in den "lib" ordner von embarcadero kopiert und unter tools>optionen>c++ optionen>Bibliothekspfad ergänzt. geändert an der situation hat sich garnichts. es sind weiterhin die gleichen fehlermeldungen. verwirrend finde ich, dass es bibliotheksPFAD und nicht ...PFADE heißt. aber da waren von vorneherein schon mehrere ordner angegeben...
-
Du mußt die ".lib"-Datei(en) einfach per "zum Projekt hinzufügen" angeben (so wie du es bei einer ".cpp"-Datei auch machen würdest). In dem Datei-Öffnen-Dialog dann entsprechend in der Dateityp-ComboBox "Bibliotheksdateien (.lib)" auswählen (oder eben ".*").
P.S. Da du im ersten Beitrag nur "C++ Compiler" geschrieben hast (und nicht C++ Builder bzw. RAD-Studio) dachte ich, du würdest per Kommandozeile (bzw. Makefile) kompilieren und linken.
-
Tut mir leid, wenn ich dinge vergesse anzugeben, die wichtig sind/wären! Ich benutze den Borland C++ Compiler, der in Embarcadero Studios 2010 integriert ist.
Die .lib-dateien (zumidenst von lapackpp) hatte ich vorher schon dem projekt hinzugefügt auf normalem weg, aber es kamen/kommen auch weiterhin linkerfehler auch zu funktionen aus lapack-header dateien.
Eingefügt habe ich die drei .lib dateienlibblas32.lib
liblapack32.lib
liblapackpp-15.lib(diese liegen auch als .dll vor und teilweise auch als .dll.a oder .la vor)
unf ich weiß, dass die funktionen in folgenden header dateien liegen:
blas3pp.h
gmc.h / gmf.h / gmd.h / gmi.h / gmli.h
laslv.h
lavc.h
vc.h
vli.haußerdem über include aufgerufene headerdateien, die aber keine der fehlerproduzierenden funktionen/typen beinhalten (auch nicht aufrufen):
lapack.h
lacomplex.hBei der GSL habe ich bisher keine lib dateien, aber urspünglich hatte ich vor erstmal lapack "zum laufen zu kriegen" und dann gsl (da habe ich bisher nur .a, .dll.a oder .la)
pragma comment hat auch nicht geklappt