Hinweise zur Einbindung existierender Libraries erbeten
-
Hi Vertexwahn ,
für jemand der wirklich vor einem Problem steht, ansonsten hätte ich das hier nicht gepostet, ist dieser Kommentar ja nicht gerade hilfreich.
-
Dann solltest du mal lernen zu lesen

Im Abschnitt 2 deiner Beschreibung steht doch, was du machen mußt - jedes der .CPP's nehmen und zu einer Lib compilieren. (am besten geht es wohl, indem du das Make-File für deinen Compiler anstartest)
-
An CStoll: Danke für den Tip.
Du schreibst, ich sollte richtig lesen lernen. Aber wie ich bereits im ersten Post geschrieben habe, habe ich auch den Abschnitt 2 gelesen. Wenn man soetwas allerdings zum ersten Mal liest, kann man nur schwer etwas damit anfangen. Habe zuvor noch nie mit Makefiles gearbeitet.
Habe es jetzt jedenfalls irgendwie hinbekommen, und für die gesamten *cpp's eine einzige Lib-Datei erhalten, sowie eine ganze Reihe an Objektdateien. Was soll ich jetzt mit den Objektdateien anfangen? Muss ich meiner IDE etwas davon mitteilen, oder findet es die von alleine?
Läßt man jetzt die Lib-File in dem Projektordner oder lieber in den Lib-Ordner von VC8.0 verschieben?
-
Yo, hier steht alles was man wissen muß:
http://www.robertnz.net/nm10.htm#starting
-
Artchi schrieb:
Yo, hier steht alles was man wissen muß:
http://www.robertnz.net/nm10.htm#startingEs ist mir schon klar, dass es für jemand, der das schon tausend Mal gemacht hat, sicher keine Hürde darstellt. Ist es aber nicht verständlich, dass man als Anfänger damit durchaus auf Probleme stossen kann?
-
Dann sage uns doch mal, was genau du an dem Getting Started nicht verstehst? Was meinst du, was wir dir hier im Forum anderes sagen würden, außer auf deutsch? Wir würden auch nur drüber lesen, und das ganze für dich übersetzen. Hast du schon versucht, das zu machen, was da steht??? Und an welchem Punkt kommst du nicht weiter? Dann kann man dir evtl. genauer helfen.
-
Dann sage uns doch mal, was genau du an dem Getting Started nicht verstehst?
Also. Zuerst weis ich schon mal gar nicht, wie ich eigentlich anfangen muss. Soll ich zuerst die Makefiles benutzen, oder zuerst folgende Anweisung:
You will need to compile all the *.cpp files listed as program files in the files section to get the complete package.
Womit ich jetzt angefangen habe ist folgendes: Im Visual Studio 2005 Command Prompt - Fenster habe ich im entsprechenden Ordner folgende Anweisung geschrieben:
nmake /f nm_m8.mak
Das Ergebnis waren eine Lib-File und eine ganze Menge an Objektdateien. Dann steht weiter auf der Seite:
Ideally you should store the resulting object files as a library.
Das habe ich auch noch nie zuvor gemacht, weis also auch nicht, wie das gehen soll.

Und noch eine Frage dazu:Your source files that access the newmat will need to #include one or more of the following files.
D.h., wenn ich die Lib-Files erzeugt habe (s.o.), brauche ich die nur noch zu meinem Projekt hinzufügen und die aufgeführten *.h-Dateien auflisten, und dann funktioniert es?
Vielen Dank für die Hilfe!
-
Libraries:( schrieb:
Dann sage uns doch mal, was genau du an dem Getting Started nicht verstehst?
Also. Zuerst weis ich schon mal gar nicht, wie ich eigentlich anfangen muss. Soll ich zuerst die Makefiles benutzen, oder zuerst folgende Anweisung:
You will need to compile all the *.cpp files listed as program files in the files section to get the complete package.
Das Makefile tut genau dieses (cpp zu compilieren). Dafür sind Makefiles nämlich da.
Libraries:( schrieb:
Womit ich jetzt angefangen habe ist folgendes: Im Visual Studio 2005 Command Prompt - Fenster habe ich im entsprechenden Ordner folgende Anweisung geschrieben:
nmake /f nm_m8.mak
Das Ergebnis waren eine Lib-File und eine ganze Menge an Objektdateien. Dann steht weiter auf der Seite:
Ideally you should store the resulting object files as a library.
Das habe ich auch noch nie zuvor gemacht, weis also auch nicht, wie das gehen soll.

Doch hast du. Indem du besagtes Lib-FIle erstellt hast. Die object files sind damit bereits verarbeitet und du brauchst sie nicht mehr.
Edit: Um die Library nun zu verwenden, mußt du:
1. Dem Linker bzw. der IDE sagen, daß das Lib-File mitgelinkt werden soll.
2. Dem Compiler bzw. der IDE sagen, in welchem verzeichnis die h-Dateien liegen.
3. Die benötigten h-Dateien in deinem eigenen Quelltext mit #include einbinden
-
Danke. Das ist wirklich gut zu wissen. Ich habe es genauso gemacht, wie du gesagt hast. Bekomme aber nun Linkerfehler der folgenden Art:
fatal error LNK1169: one or more multiply defined symbols found C:\...\Basis.exe 1
error LNK2005: _mainCRTStartup already defined in MSVCRTD.lib(crtexe.obj) LIBCMT.lib
error LNK2005: _exit already defined in MSVCRTD.lib(MSVCR80D.dll) LIBCMT.lib
error LNK2005: __XcptFilter already defined in MSVCRTD.lib(MSVCR80D.dll) LIBCMT.lib
error LNK2005: __unlock already defined in MSVCRTD.lib(MSVCR80D.dll) LIBCMT.lib
error LNK2005: __lock already defined in MSVCRTD.lib(MSVCR80D.dll) LIBCMT.lib
error LNK2005: __invoke_watson already defined in MSVCRTD.lib(MSVCR80D.dll) LIBCMT.lib
error LNK2005: __initterm_e already defined in MSVCRTD.lib(MSVCR80D.dll) LIBCMT.libKannst du was damit anfangen?
2. Dem Compiler bzw. der IDE sagen, in welchem verzeichnis die h-Dateien liegen.
Wenn ich die Headerfiles in mein Projektverzeichnis kopiert habe, und in meinem Code #includiert habe, dann muss ich doch der IDE nichts mehr sagen, oder?
DANKE!

-
Der Link-Fehler sieht nach irgendetwas MSVC spezifisches aus. Damit kann ich dir nicht weiterhelfen (keine Ahnung von MSVC).
Du kannst die Header-Dateien der Library in dein Projektverzeichnis kopieren. Das ist aber sehr unsauber. Besser wäre es das entsprechende Verzeichnis (was sich irgendwo in der Nähe der Lib-Datei befinden sollte) in den include-Pfad aufzunehmen .
-
Z2 schrieb:
Damit kann ich dir nicht weiterhelfen (keine Ahnung von MSVC).
Schade, trotzdem danke für die Hinweise.
-
Hi.
Ich habe jetzt den Autor der Libraries angemailt und er hat mir weitergeholfen. Eine Verwendung der nmake-Anweisung war gar nicht nötig. Man muss nur einfach die "richtigen" Source- und Headerdateien in das Programm einbinden, und dann funktionierts auch.
Danke für die Hilfe!