Multimediatimer: Winmm.lib kann nicht gelinkt werden
-
Hallo Fans,
ich experimentiere gerade mit Multimediatimern herum. Dazu habe ich folgendes kleines Codefragment programmiert:
//--------------------------------------------------------------------------- #include <vcl.h> #include <Mmsystem.h> #pragma hdrstop #pragma comment( lib, "c:\Programme\Borland\CBuilder6\Lib\Psdk\Winmm.lib" ) #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { timeBeginPeriod(2); // nur zum Testen } //---------------------------------------------------------------------------Der Witz ist, auf meinem Rechner wird es kompiliert und gelinkt, auf dem meines Kollegen nicht. Dort bricht der Builder mit "Unresolved externals" ab, er findet also die Funktionen aus der winmm.lib nicht.
Das Projekt ist genau das Selbe, der Builder ebenfalls, die Lib ist im Projekt sowie auch im Quellcode eingebunden. Es treibt uns in den Wahnsinn ...

Woran könnte es liegen?
MfG F98.
-
Und die Lib auf "dem normalen" Weg über Projekt-> Datei hinzufügen in das Projekt aufnehmen
-
Bringt leider auch nichts.
-
Hast du auch das pragma comment entfernt?
-
Nein, laut msdn sollte das doch mit rein...? Und auf meinem rechner kompiliert und linkt es ja.

-
Weil die lib in genau diesem Pfad gefunden wird. Wenn die lib bei deinem Kumpel woanders liegt, wird sie der Linker nicht finden.
Zitat aus der Hilfe zu #pragma comment (lib "string")Writes a comment record into an .OBJ file. A library module that is not specified in the linker's response-file can be specified by the comment LIB directive. The linker includes the library module name specified in string as the last library. Multiple modules can be named and linked in the order in which they are named.
-
Ja, dass mit dem Pfad ist mir schon klar. Wenn wir das auf dem anderen Rechner kompilieren, tragen wir natürlich den Pfad für die winmm.lib von dort ein, und bin den auch die lib von dort in das Projekt explizit ein. Wir haben nun wirklich schon alle möglichen und unmöglichen Kombinationen durch.
-
Kann es sein, dass dein Kollege eine andere winmm.lib hat? Evtl. eine für dynamische Bindung?
-
Nein, die sind identisch und kommen auch nur in diesem Verzeichnis ( ...\Borland\CBuilder6\Lib\Psdk\ ) vor. Wir haben beide (meine und seine) binär verglichen. Der einzige Unterschied liegt in den erzeugten OBJ-Dateien (meine und seine), die sind unterschiedlich groß.
-
Nein, laut msdn sollte das doch mit rein...? Und auf meinem rechner kompiliert und linkt es ja
Die msdn schreibt etwas für den C++Builder??
Es sollte doch gehen, wenn das ohne diesen "Kommentar" ist. Habe diese Zeile jedenfalls noch nie genutzt (was ja nichts heissen muss), aber der Weg über "Dem Projekt hinzufügen" oder dynamisch laden scheint doch der richtige zu sein?
-
Christian211 schrieb:
Nein, laut msdn sollte das doch mit rein...? Und auf meinem rechner kompiliert und linkt es ja
Die msdn schreibt etwas für den C++Builder??
Nein. Nicht explizit.
Christian211 schrieb:
Es sollte doch gehen, wenn das ohne diesen "Kommentar" ist. Habe diese Zeile jedenfalls noch nie genutzt (was ja nichts heissen muss), aber der Weg über "Dem Projekt hinzufügen" oder dynamisch laden scheint doch der richtige zu sein?
Yo, ohne die "pragma comment"-Anweisung klappts bei mir auch, nur eben beim Kollegen nicht. Er hat jetzt den Builder komplet runtergeschmissen und neu installiert und siehe da, es kompiliert. Leider wissen wir immer noch nicht, woran es gelegen hat.