Visual Studio Projekt mit Code::Blocks' GNU GCC Compiler kompilieren



  • Wäre natürlich gemein, wenn die zum Quellcode auch binären Code liefern würden. Aber wer weiß schon, wozu diese Dateien gut sind?

    Jedenfalls sagt mir Zeile 10, daß man das ganze unter Linux mit dem gcc übersetzen kann (oder können sollte). Dazu wäre es aber seltsam, wenn nur Windows-Libs dabei wären. Vielleicht braucht man die aber auch nur für Windows, who knows?

    Jedenfalls deutet der Name *.lib auf Windows-Code hin:
    http://en.wikipedia.org/wiki/Library_(computing)#Naming

    Ist ein Makefile dabei?
    Ist es ein Canon-Fotoapparat?



  • Nein, es ist kein Canon-Fotoapparat. Es ist eine Kamera der Firma MaxxVision, die für Bildverarbeitung eingesetzt wird.
    Bei den Source-Code des SDK`s liegt kein Makefile bei, dafür aber bei ein paar von den headerdateien. Ich denke, dass ich mit den DLL-Dateien und den headerdateien bestimmt die lib-Dateien neu übersetzen muss, aber wie geht das?



  • es gibt eine moeglichkeit aus DLL-dateien mingw-kompatible .a library dateien zu machen.

    als erste anlaufstelle haette ich mal das hier, glaube das sollte sogar ausreichen (ab "The resulting DLL will"):

    http://www.geocities.com/yongweiwu/stdcall.htm

    //EDIT:

    das hier sieht einfacher aus, zudem kein unixtools/linux notwendig:

    http://oldwiki.mingw.org/index.php/CreateImportLibraries



  • Irgendwie bekomme ich das nicht gebacken, zumal ich ja nicht weiß, wie die originalen *.lib Dateien intern aufgebaut sind und ich ja diese eigentlich ersetzen will. Gibt es denn keine Möglichkeit diese .lib Dateien zu konvertieren in das lib.a-Format des gcc-Compilersß



  • also manche DLL und LIB dateien kann mingw direkt.

    aber der weg den ich dir aufgezeigt habe ist ja genau um die .lib-dateien mit .a-dateien zu ersetzen, aber das machst du nicht indem du die .lib zu .a konvertierst, sondern .a aus .dll generierst.

    //EDIT: hast du denn mal probiert ob du die DLLs hart direkt reinlinken kannst?



  • Nein, hab ich noch nicht und wenn ich ehrlich bin, dann sträube ich mich ein wenig dagegen, da es recht viele sind 😞 . Muss dann in jeder Header-Datei die jeweilige DLL eingebunden werden oder kann man das zentral machen? Von sowas hab ich absolut keine Ahnung. Oder muss man sogar jede Methode und Klasse aus den DLL`s einzeln einbinden?
    (Und immer wieder herzlichen Dank, für deine Hilfe 🙂 )



  • naja, die graue theorie sagt:

    normales kompilieren und linken 'libfoo' (libfoo.a):

    gcc -o executable.exe file1.c file2.c file3.c -lfoo
    

    normales kompilieren und linken einer foo.lib:

    gcc -o executable.exe file1.c file2.c file3.c foo.lib
    

    (nicht sicher, aber glaube das geht manchmal)

    kompilieren und linken einer dll:

    gcc -o executable.exe file1.c file2.c file3.c foo.dll
    

    das problem: das geht kaum direkt in codeblocks, da muesstest du schon den gcc auf commandline bedienen.

    dadurch waehre das konvertieren LIB aus DLL der einfachere weg.



  • zum "nicht gebacken bekommen":

    einfach fuer jede DLL fuer die es auch eine .lib gibt das hier machen:

    dlltool -l libfoo.a libfoo.dll
    

    (natuerlich in einem ordner in dem die libfoo.dll zu finden ist)

    ausser du meinst mit "nicht gebacken bekommen" eine fehlermeldung, aber falls dem so ist solltest du an deiner ausdrucksweise arbeiten.



  • Ich hab das perfekte tool gefunden. Im MinGW-Ordner befindet sich ein tool namens reimp mit dessen Hilfe man *.lib-files in *.a-files umwandelt. Dennoch löst das in keinster Weise mein Problem. Der Compiler gibt noch immer den gleichen Fehler aus obwohl ich jetzt alle Datein eingebunden habe. Wahrscheinlich liegt es wohl doch nicht an den Biblotheks bzw. fehlenden Dll-Datein.



  • hm, in ermangelung einer fehlermeldung kann ich dazu nur folgendes sagen:

    lol



  • Naja, die Fehlermeldung und der Code stehen auf der ersten Seite. Kannst du damit etwas anfangen?



  • Benutze doch einfach den MS-Compiler. 🙄 Oder ist MS sooo böse, das man nicht mal den Compiler benutzten will?


Anmelden zum Antworten